条件测试
时间:2006-04-13 来源:xiaophedap
一般,在条件测试中,对文件、字符串和数字用test命令,对数字和字符串用expr命令。expr命令测试和执行数值输出。用最后退出状态命令——$?——可以知道test和expr的执行结果,0表示正常结束,1表示返回错误。
1、测试文件状态
test一般有两种格式:
test condition
或者是
[ condition ]
说明:使用方括号来测试时,注意在测试的条件两边加上空格。
测试文件状态的条件表达式很多,最常见的如下:
文件状态测试
-d |
目录 |
-s |
文件长度大于0、非空 |
---|---|---|---|
-f |
正规文件 |
-w |
可写 |
-l |
符号链接 |
-u |
文件有suid位设置 |
-r |
可读 |
-x |
可执行 |
例如测试/home/crystal_shell/bin/findfile文件是否有可写权限,可以用以下两个方法:
(1)$ [ -w findfile ]
(2)$ test -w findfile
然后可以用$ echo $?来检查到底是否有写权限,如果为0则表示有写权限,如果为1则表示没有。当然,如果对此怀疑,可以用$ ls -l来查看相应的权限是否和测试的一致。
2、测试时使用逻辑操作符
有时候需要比较两个文件的状态,shell提供了三种逻辑操作符来完成此功能:
-a 逻辑与,操作符两边均为真,结果为真,否则为假
-o 逻辑或,操作符两边只要一边为真,结果即为真,否则为假
! 逻辑否,条件为假,结果为真;条件为真,结果为假
3、字符串测试
字符串测试一般有5种格式:
(1)test “string”
(2)test string_operator “string”
(3)test “string” string_operator “string”
(4)[ string_operator string ]
(5)[ string string_operator string ]
在这里,string_operator可以为以下几种:
= 两个字符串相等
!= 两个字符串不相等
-z 空字符串
-n 非空字符串
4、测试数值
测试数值一般可以使用许多操作符,一般格式如下:
“number” numeric_operator “number”
或者是
[ “number” numeric_operator “number” ]
其中numeric_operator可以为:
-eq 数值相等(=)
-ne 数值不相等(!=)
-gt 第一个数大于第二个数(>)
-lt 第一个数小于第二个数(<)
-le 第一个数小于等于第二个数(<=)
-ge 第一个数大于等于第二个数(>=)
5、expr的用法
expr命令一般用于整数值,但也可以用于字符串。一般格式为:
expr argument operator argument