⒈字符串测试操作符

测试内容

[ string1 = string2 ]

string1等于string2(=两侧必须有空格)

[ string1= = string2 ]

string1等于string2(2.xbash中可以用单等号=代替)

[ 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 ]

string1string2都为真

[ string1 –o string2 ]

string1string2至少有一个为真

[ !string1 ]

字符串不匹配

⒊逻辑测试操作符(用于复合命令) *

测试内容

[[ pattern1 && pattern2 ]]

pattern1pattern2都为真

[[ pattern1 || pattern2 ]]

pattern1pattern2至少有一个为真

[[ !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 ]

如果文件file1file2新则为真(根据修改时间)

[ file1 –ot file2 ]

如果文件file1file2老则为真

[ file1 –ef file2 ]

如果文件file1file2有相同的设备数或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 老就为真(修改时间)