条件测试

简介:

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

相关文章
|
Shell
Shell条件测试符及if条件语句
Shell条件测试符及if条件语句
122 0
|
Shell 测试技术 数据安全/隐私保护
shell编程之条件语句(条件测试、if语句、case语句)(下)
要使Shell脚本程序具备一定的“智能”,面临的第一个问题就是如何区分不同的情况以确定执行何种操作。Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常。 使用专门的测试工具——test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值为0表示条件成立)。 使用test测试命令时,有以下两种形式:
128 0
|
Java Shell 测试技术
shell编程之条件语句(条件测试、if语句、case语句)(上)
要使Shell脚本程序具备一定的“智能”,面临的第一个问题就是如何区分不同的情况以确定执行何种操作。Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常。 使用专门的测试工具——test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值为0表示条件成立)。 使用test测试命令时,有以下两种形式:
167 1
|
JavaScript 前端开发 机器人
Cypress 的条件测试
Cypress 的条件测试
138 0
|
Shell
shell脚本中的特殊变量与if条件测试
shell脚本中的特殊变量与if条件测试
172 0
shell脚本中的特殊变量与if条件测试
|
Shell Linux
shell脚本之条件测试
shell脚本之条件测试
Cypress系列(58)- 停用条件测试
Cypress系列(58)- 停用条件测试
152 0
|
SQL 算法 关系型数据库
PostgreSQL 任意字段数组合 AND\OR 条件,指定返回结果条数,构造测试数据算法举例
标签 PostgreSQL , 构造测试数据 , 任意字段组合AND,OR查询 , 指定结果集大小 背景 在进行一些实际的POC测试时,需要根据业务提出的需求构造数据,比如按照任意字段数组合 AND\OR 条件,指定返回结果条数,构造测试数据。
1450 0
|
Android开发
Android RxJava/RxAndroid:takeWhile,直test测试条件通过才执行链式操作
Android RxJava/RxAndroid:takeWhile,直test测试条件通过才执行链式操作 RxJava/RxAndroid的takeWhile的test测试某一个条件是否达成,若完成,才执行后续的链式操作,若没有达成,则轮询反复的执行test测试,不执行后续操作。
1541 0
|
Shell Windows Linux

热门文章

最新文章