对文件、字符串和数字使用test命令。
对数字和字符串使用expr命令。
expr命令测试和执行数值输出。使用最后退出状态命令$?可测知test和expr,二者均以0表示正确,1表示返回错误。
test
格式 test condition或[ condition ]
-d目录
-s文件长度大于0、非空
-f正规文件
-L符号连接
-u文件有suid位设置
-w可写
-r可读
-x可执行
例如:ls -l aa.txt [ -w aa.txt ] echo $?
测试时使用逻辑操作符
测试文件状态是否为ok,但是有时要比较两个文件状态。shell提供三种逻辑操作完成此
功能。
-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真。
例如: [ -w aa.txt -a -w bb.txt ]
字符串测试
= 两个字符串相等。
!= 两个字符串不等
-z 空串。
-n 非空串
例如:test [ -z $EDITOR ] [ $EDITOR=vi ]
测试数值
测试数值可以使用许多操作符,一般格式如下:
"number" number coperator" number "
或者
[ "number number coperator " number" ]
number coperator可为:
-eq 数值相等。
-ne 数值不相等。
-gt 第一个数大于第二个数。
-lt 第一个数小于第二个数。
-le 第一个数小于等于第二个数。
-ge 第一个数大于等于第二个数。
例如:number=130 [ "$number" -eq "130" ] 也可以直接比较数值 或者加入逻辑操作
expr
expr命令一般用于整数值,但也可用于字符串。一般格式为:
expr argument operator argument
expr也是一个手工命令行计数器。
expr 10 + 10
使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。\*
增量计算
expr在循环中用于增量计算。首先,循环初始化为0,然后循环值加1,反引号的用法意
即替代命令。最基本的一种是从(expr)命令接受输出并将之放入循环变量
loop=0
loop=`expr $loop + 1`
数值测试
可以用expr测试一个数。如果试图计算非整数,将返回错误。
expr aa + 1
这里需要将一个值赋予变量(不管其内容如何),进行数值运算,并将输出导入dev/null,
然后测试最后命令状态,如果为0,证明这是一个数,其他则表明为非数值。
value=10
expr $value + 2 > /dev/null 2>&1
echo $?
模式匹配
expr也有模式匹配功能。可以使用expr通过指定冒号选项计算字符串中字符数。. *意即任
何字符重复0次或多次
转载于:https://blog.51cto.com/alca0126/1392547