shell中的test用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
1. 数值测试
-eq |
等于为true |
-ne |
不等,为true |
-gt |
大于,为true |
-ge |
大于等于,为true |
-lt |
小于,为true |
-le |
小于等于,为true |
#shell
#!/bin/sh
a=3
b=5
if test $a -eq $b;then
echo "$a=$b"
else
echo "$a!=$b" #3!=5
fi
if test $a -gt $b;then
echo "$a>$b"
else
echo "$a<=$b" #3<=5
fi
if test $a -le $b;then
echo "$a<=$b" #3<=5
else
echo "$a>$b"
fi
2. 字符串测试
= |
等于,为true |
!= |
不等,为true |
-z 字符串 |
字符串的长度为0,为true |
-n 字符串 |
字符串的长度不为0,为true |
#shell
#!/bin/sh
a="hello"
b="world"
if test $a = $b;then
echo "equal"
else
echo "not equal" not equal
fi
if test -z $a;then
echo "字符串长度为0"
else
echo "字符串长度不为0" #字符串长度不为0
fi
3. 文件测试
-e 文件名 |
如果文件存在,则为真 |
-r 文件名 |
如果文件存在且可读,则为真 |
-w 文件名 |
如果文件存在且可写,则为真 |
-x 文件名 |
如果文件存在且可执行,则为真 |
-s 文件名 |
如果文件存在且至少有1个字符,则为真 |
-d 文件名 |
如果文件存在且是目录则为真 |
-f 文件名 |
如果文件存在且为普通文件,则为真 |
-c 文件名 |
如果文件存在且为字符型特殊文件,则为真 |
-b 文件名 |
如果文件存在且为特殊文件,则为真 |
#shell
#!/bin/sh
if test -e land;then
echo "文件已存在"
else
touch land
echo "文件已创建" #文件已创建
fi
if test -r land;then
echo "文件存在且可读" #文件存在且可读
else
echo "文件不存在或文件不可读"
fi
4. 使用逻辑运算符 -a -o !
#shell
#!/bin/sh
if test -e land -o -e wind;then
echo "有一个存在" #有一个存在
else
echo "2个都不存在"
fi