1.
test命令用于对文件、字符串和数字的
测试 a. 测试文件的状态
格式:test 条件 或者 [ 条件 ]
文件测试状态如下:
-d:目录 -s:文件长度大于0、非空 -f:正规文件 -L:符合连接
-u:文件有suid位设置 -r:可读 -w:可写 -x:可执行
注:1. 使用方括号时记得在条件两边加上空格。
2. 使用两种方法测试文件ghr.txt是否可写并用最后退出状态测试是否成功。记住, 0表示
成功,其他为失败
例1:测试文件ghr.txt是否为目录,并用最后退出状态测试是否成功。
>test -d ghr.txt //也可以写成命令[ -d ghr.txt ]
>echo $? //返回0,表示ghr.txt为目录,返回1,表示ghr.txt不是目录。
例2:测试ghr.txt的文件权限是否设置了suid位
>test -u ghr.txt 或者 [ -u ghr.txt ]
>echo $?
b. 使用逻辑操作符测试文件的状态
shell提供三种逻辑操作符功能:
-a:表示与,-o:表示或,!:表示非
例3:测试文件ghr.txt是否具有可读可写的权限。
>[ -r ghr.txt -a -w ghr.txt ]
>echo $? //执行结果为0,表示ghr.txt文件可读可写。
例4:测试文件ghr.txt可读或者ghr为目录。
>[ -r ghr.txt -o -d ghr ]
>echo $?
例5:测试ghr.txt文件不为目录。
>[ ! -d ghr.txt ]
>echo $?
c. 字符串测试
格式如下:
1. test 字符串 2. test 操作符 字符串 3. test 字符串 操作符 字符串
4. [ 操作符 字符串 ] 5.[ 字符串 操作符 字符串 ]
操作符有以下几个:=、!=、-z:表示空串、-n:表示非空串
例6:测试环境变量HOME是否为空。
>[ -z $HOME ]
>echo $?
例7:测试字符串ghr和ghr1是否相等。
>test "ghr" = "ghr1" 或者写成 [ "ghr" = "ghr1"]
>echo $?
例8:测试环境变量HOME的值是否为ghr.
>[ $HOME = "ghr" ] 或者写成 test $HOME = "ghr"
>echo $?
d. 测试数值。
格式如下:
test 数字 操作符 数字 或者写成 [ 数字 操作符 数字 ]
操作符有以下几种:
1. -eq:相等 2. -ne:不相等 3. -gt:大于 4. -lt:小于 5. -ge:大于等于 6. -le:小于等于
例9:判断123是否等于234.
>test 123 -eq 234
>echo $?
例10:判断变量ghr的值是否大于123.
>ghr=456
>test $ghr -gt 123 或者写成 [ $ghr -gt 123 ]
>echo $?
2. expr的用法:
a. expr命令一般用于整数值,也用于字符串。
命令格式: expr 参数值 操作符 参数值
例11:>expr 10 + 5
结果为:15
例12:>expr 10 /5
结果为:2
例13:>expr 10-5
结果为:5
例14:>expr 10 \* 5
结果为:50
注:使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。
b. 用于增量计数:
expr在循环中用于增量计数。首先,循环初始化为0,然后循环值加1,反引号的用法意
即替代命令。最基本的一种是从(expr)命令接受输出并将之放入循环变量。
例15:>LOOP=0
>LOOP=`expr $LOOP + 1`
c. 数值测试:
可以用expr测试一个数。如果试图计算非整数,将返回错误。
例16:>expr ghr + 1
执行结果:expr: non-numeric argument。
例18:>ghr="abc"
>expr $ghr = "abc"
执行结果为1。 //注:expr返回结果为1表示执行成功,切忌不要与echo $?输出的结果搞混淆了。
d. 模式匹配:
这个功能不是很明白如何使用。