⒈字符串测试操作符
|
测试内容
|
[
string1 = string2 ]
|
string1等于string2(=两侧必须有空格)
|
[
string1= = string2 ]
|
string1等于string2(在2.x版bash中可以用单等号=代替)
|
[
string1 != string2 ]
|
string1不等于string2(!=两侧必须有空格)
|
[
string ]
|
string不为空
|
[ -z
string ]
|
string的长度为0
|
[ -n
string ]
|
string的长度不为0
|
[ -l
string ]
|
string的长度(字符数)
例如:test -n $word 或
[ -n $word ]
test tom = sun 或 [ tom = sun ]
|
⒉逻辑测试操作符
|
测试内容
|
[
string1 –a string2 ]
|
string1和string2都为真
|
[
string1 –o string2 ]
|
string1或string2至少有一个为真
|
[
!string1 ]
|
字符串不匹配
|
⒊逻辑测试操作符(用于复合命令) *
|
测试内容
|
[[
pattern1 && pattern2 ]]
|
pattern1和pattern2都为真
|
[[
pattern1 || pattern2 ]]
|
pattern1或pattern2至少有一个为真
|
[[
!pattern1 ]]
|
模式不匹配
|
⒋整数测试操作符
|
测试内容
|
[
int1 –eq int2 ]
|
int1等于int2
|
[
int1 –ne int2 ]
|
int1不等于int2
|
[
int1 –gt int2 ]
|
int1大于int2
|
[
int1 –ge int2 ]
|
int1大于或等于int2
|
[
int1 –lt int2 ]
|
int1小于int2
|
[
int1 –le int2 ]
|
int1小于或等于int2
|
⒌二进制操作符(用于文件测试)
|
测试内容
|
[
file1 –nt file2 ]
|
如果文件file1比file2新则为真(根据修改时间)
|
[
file1 –ot file2 ]
|
如果文件file1比file2老则为真
|
[
file1 –ef file2 ]
|
如果文件file1和file2有相同的设备数或i结点数则为真
|
⒍文件测试操作符
|
测试结果为真时需要满足的条件
|
–b
filename
|
块专用文件
|
–c
filename
|
字符专用文件
|
–d
filename
|
目录存在
|
–e
filename
|
文件存在
|
–f
filename
|
普通文件存在且不是目录
|
–G
filename
|
文件存在且属于有效组ID时为真
|
–g
filename
|
Set–group–ID被设置
|
–k
filename
|
Sticky位被设置
|
–L
filename
|
文件是一个符号链接
|
–h
filename
|
文件是一个符号链接
|
–p
filename
|
文件是一个命名管道
|
–O
filename
|
文件存在且属于有效用户ID
|
–r
filename
|
文件可读
|
–S
filename
|
文件是一个socket
|
–s
filename
|
文件大小非0
|
–t
fd
|
如果fd(文件描述符)被一个终端打开则为真
|
–u
filename
|
Set–user–ID位被设置
|
–w
filename
|
文件可写
|
–x
filename
|
文件可执行
|
* 注意:使用复合命令时,模式可以包含通配符,要进行严格的字符串测试,pattern2 必须用引号括起来。
string 字符串
pattern 模式
[ string -a string ]
[[ pattern && pattern ]]
[ string -o string ]
[[ pattern || pattern ]]
= 等于
!= 不等于
[ string ] string不为空
-z string的长度为0
-n string的长度不为0
-a / && 全都为真
-o / || 至少一个为真
-eq 等于
-ne 不等于
-gt 大于
-ge 大于或等于
-lt 小于
-le 小于或等于
[ file1 -nt file2 ] file1 比 file2 新就为真(修改时间)
[ file1 -ot file2 ] file1 比 file2 老就为真(修改时间)
转载于:https://blog.51cto.com/linuy/156170