Shell--条件测试语句

test-测试 文件、字符串、数字
expr-测试 字符串、数字
使用最后退出状态命令$?可测知test和expr,二者以0表示正确,1表示返回错误

1. 文件测试

格式:
test condition或者[ condition ]
注意:[ ]两端需要有空格

常用文件测试条件:
-d 目录 -s 文件长度大于0、非空 -f 正规文件 -w 可写 -L 符号连接 -u 文件有suid位设置 -r 可读 -x 可执行
例如,测试文件test.txt是否可写入,返回0代表可以:
$ test -w test.txt
$ echo $?
0

2. 测试时使用逻辑操作符

-a 逻辑与
-o 逻辑或
! 逻辑否,条件为假,结果为真
$ test -w test1.txt -a -w test2.txt
$ echo $?
0
或者
[ -w test1.txt -a -w test2.txt ]
$ echo $?
0

3. 字符串测试

共有5中格式:
test "string"
test string_operator "string"
test "string" string_operator "string"
[ string_operator "string" ]
[ "string" string_operator "string" ]
其中,"string"两边应有双引号,string_operator为:
= 字符串相等;注意此处相等不是==,而是=
!= 字符串不相等; -z 空串; -n 非空串;

4. 测试数值

"number" number_operator "number"
[ "number" number_operator "number" ]
number_operator:
-eq 相等 -ne 不相等 -gt 大于 -lt 小于 -ge 大于等于 -le 小于等于

expr用于数值测试,也可用于字符串

exper测试数值
这里需要将一个值赋予变量(不管其内容如何),进行数值运算,并将输出导入dev/null,然后测试最后命令状态,如果为0,证明这是一个数,其他则表明为非数值。
$ value=12
$ expr $value + 10 > /dev/null 2>&1
$ echo $?
0

expr模式匹配

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

你可能感兴趣的:(Shell--条件测试语句)