天天看点

条件测试

对文件、字符串和数字使用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次或多次

本文转自岁月丶倾城博客51CTO博客,原文链接http://blog.51cto.com/alca0126/1392547如需转载请自行联系原作者

laihuadongcto