test 命令的格式非常简单
test condition
condition 是test命令要测试的一系列参数和值。当用在if-then 语句中时,test 命令看起来是这样的
if test condition
then
commands
f i
如果不写test 命令的condition 部分,它会以非零的退出状态码退出,并执行else 语句块
bash shell 提供了另一种条件测试方法,无需在if -then 语句中声明test
if [condition]
then
commands
f i
方括号定义了测试条件,注意第一个方括号之后和第二个方括号之前必须加上一个空格,否则就会报错
test 命令可以判断三类条件:
- 数值比较
- 字符串比较
- 文件比较
数值比较
比较 | 描述 |
n1 -eq n2 | 检查n1 与n2 是否相等 |
n1 -ge n2 | 检查n1是否大于或等于n2 |
n1 -gt n2 | 检查n1是否大于 n2 |
n1 -le n2 | 检查n1 是否小于等于n2 |
n1 -lt n2 | 检查n1 是否小于n2 |
n1 -ne n2 | 检查n1 是否不等于n2 |
字符串比较
比较 | 描述 |
str1=str2 | 检查str1是否与str2 相等 |
str1!=str2 | 检查str1是否和str2 不同 |
str1<str2 | 检查str1是否比str2小 |
str1>str2 | 检查str1是否比str2大 |
-n str1 | 检查str1 的长度是否非0 |
-z str1 | 检查str1 的长度是否为0 |
-n 和 -z 可以检查一个变量是否含有数据
$var1="zhangjunjie"
$var2="junjie"
if [-n $var1]
then
commands
判断var1 变量的长度是否非0.而它的长度正好非0.所以then 部分就被执行了
if [-z $var2]
then
commadns
-z 判断var2 的长度是否为0.而它的长度正好为0,所以then部分就被执行了