Linux – Shell 条件测试

写脚本的时候,有时要判断字符串是否相等,或者检查文件状态或者数字测试,基于这个条件才能做进一步动作。test命令用于测试字符串,文件状态和数字。expr命令测试和执行数值输出。使用最后退出状态命令$?可测知test和expr,两者均以0表示正确,1表示换回错误。

 

test用法

测试文件状态

test一般有两种格式

test condition 或 [condition](注意在条件两边加上空格)

 

 

逻辑操作符

-a 逻辑与,操作符两边均为真,结果为真,否则为假

-o 逻辑或,操作符两边一边为真,结果为真,否则为假

! 逻辑否,条件为假,结果为真

 

字符串测试

字符串测试是错误捕获很重要的一部分,特别是测试用户输入或比较变量时尤为重要。字符串测试有5种格式。

test “string”

test string_operator “string”

test “string” string_operator “string”

[ string_operator string ]

[ string string_operator string ]

string_operator可为:

= 两个字符串相等

!= 两个字符串不等

-z 空串

-n 非空串

 

测试数值

测试数值可以使用许多操作符,一般如下:

“number” numric_operator “number”

[“number” numric_operator “number” ]

numric_operator可为:

-eq 数值相等

-ne 数值不相等

-gt 第一个数大于第二个数

-lt 第一个数小于第二个数

-le 第一个数小于等于第二个数

-ge 第一个数大于等于第二个数

 

expr用法

expr命令一般用于整数值,但也可用于字符串。

expr argument operator argument

比如expr 10 + 10

注意使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义:expr 30 \* 3

 

增量计数

expr在循环中用于增量计算。首先,循环初始化为0,然后循环值加1,反引号的用法意即替代命令。

LOOP=0

LOOP=`expr $LOOP + 1`

 

数值测试

expr 可以用来测试一个数,如果试图计算非整数,将返回错误

[root@localhost ~]# expr 0.1 + 1

expr: 参数数目错误

 

模式匹配

expr也有模式匹配功能。可以使用expr通过指定冒号选项计算字符串中字符数。.*意即任何字符重复0次或多次

[root@localhost ~]# VALUE=texts.doc

[root@localhost ~]# expr $VALUE :'\(.*\).doc'

texts

你可能感兴趣的:(test,expr,linux)