有时判断字符串是否相等或检查文件状态或是数字测试等。Test命令用于测试字符串,文件状态和数字。
文件状态测试
- 格式
test condition filename 或 [ condition filename ]
- 使用方括号时,要注意在条件两边加上空格。
- 文件测试状态 :测试的结果可以用$?的值来判断,0表示成功,其他为失败
选项 | 说明 |
---|---|
-e | 是否存在某个文件或者目录 |
-d | 是否是目录 |
-s | 文件长度大于0、非空 |
-f | 正规文件 |
-w | 可写 |
-L | 符号链接 、 |
-u | 文件有suid位设置 |
-r | 可读 |
-x | 可执行 |
-z | 字符串为空 |
#!/bin/bash
echo "test use 1"
test -w tmp.txt
echo $?
echo "test use 2 [] begin"
[ -w tmp.txt ]
echo $?
- 多个条件组合起来测试,就是说操作符两边都是
test condition filename 或 [ condition filename ]
选项 | 说明 |
---|---|
-a | 逻辑与,操作符两边均为真,结果为真,否则为假。 |
-o | 逻辑或,操作符两边一边为真,结果为真,否则为假。 |
! | 逻辑否,条件为假,结果为真。 |
- 测试xac是否可执行或者xab是否可写,使用逻辑或操作
字符串测试
格式(也是两种格式–test和中括号):
使用方括号时,要注意在条件两边加上空格。
- 测试两个字符是否相等。退出状态变量 $?,0表示成功,1表示失败。
- string_operator 说明
string_operator | 说明 |
---|---|
= | 两个字符串相等 |
!= | 两个字符串不等 |
-z | 空串 |
-n | 非空串 |
测试环境变量是否为空
测试字符串是否相等
测试数值
格式:
"number" numberic_operator "number"
[ "number" numberic_operator "number" ]
- 注意数字两端有双引号
- 注意中括号两端需要有空格
numberic_operator说明
numberic_operator | 说明 |
---|---|
-eq | 数值相等。 |
-ne | 数值不相等。 |
-gt | 第一个数大于第二个数。 |
-lt | 第一个数小于第二个数。 |
-le | 第一个数小于等于第二个数。 |
-ge | 第一个数大于等于第二个数。 |
expr数字运算
用来计算表达式的值,参与运算的必须是数字,否则会报错!利用此点可以用来测试数字格式。
使用乘号时也要用反斜线屏蔽其特殊意义
运算符两边需要有空格!!!
加法运算:expr 10 + 10
减法运算:expr 20 - 10
加法运算:expr 10 / 5
乘法运算:expr 10 \* 5