shell中的test用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
数值测试
* -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"
fi
if test $a -gt $b;then
echo "$a>$b"
else
echo "$a<=$b"
fi
if test $a -le $b;then
echo "$a<=$b"
else
echo "$a>$b"
fi
3!=5
3<=5
3<=5
字符串测试
* = 等于,为true
* 1= 不等,为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"
fi
if test -z $a;then
echo "字符串长度为0"
else
echo "字符串长度不为0"
fi
not equal
字符串长度不为0
文件测试
* -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
文件已创建
文件存在且可读
使用逻辑运算符 -a -o !
#shell
#!/bin/sh
if test -e land -o -e wind;then
echo "有一个存在"
else
echo "2个都不存在"
fi
有一个存在