1、test一般有两种格式,即:
test condition
或
[ condition ]
使用方括号时,要注意在条件两边加上空格。
测试文件状态是否为O K,但是有时要比较两个文件状态。s h e l l提供三种逻辑操作完成此
功能。
-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真。
2、字符串测试是错误捕获很重要的一部分,特别在测试用户输入或比较变量时尤为重要。
字符串测试有5种格式。test “string” test string_operator “string” test “string” string_operator “string” [ string_operator string ] [ string string_operator string ]
其中:string_operator可为:
= 两个字符串相等。
!= 两个字符串不等。
-z 空串。
-n 非空串。
3、测试数值可以使用许多操作符,一般格式如下:
"number " number_operator" number "
或者
[ " number " number_operator " number " ]
number_operator可为:
-eq 数值相等。
-ne 数值不相等。
-gt 第一个数大于第二个数。
-lt 第一个数小于第二个数。
-le 第一个数小于等于第二个数。
-ge 第一个数大于等于第二个数。
4、 expr用法,其一般用于整数值,但也可用于字符串。
下面加或没有加空格之间的区别:
root@ubuntu:~# expr 10+10
10+10
root@ubuntu:~# expr 10 + 10
20
在使用乘法的时候,需要使用\来屏蔽其特定的含义。不同的操作系统可能不同,如我在redhat9上:
[root@USC_28_18 xinbo]# expr 10 * 3
expr: syntax error
[root@USC_28_18 xinbo]# expr 10 \* 3
30
我在ubuntu10.4上:
root@ubuntu:~# expr 30 * 3
90
这样也是可行的。不过最好还是加上\,为了兼容性。
其常用来增量计算。
root@ubuntu:~# LOOP=0
root@ubuntu:~# LOOP=`expr $LOOP + 1`