test命令在Shell脚本中用于进行条件测试和条件判断。它用于检查文件、字符串和数值的各种条件,并返回一个状态码,表示条件是否为真。test命令的返回值为0表示真,非零值表示假。
下面是test命令的一些常见用法和示例:
数值比较:
-eq:等于
-ne:不等于
-gt:大于
-ge:大于等于
-lt:小于
-le:小于等于
-eq:等于
-ne:不等于
-gt:大于
-ge:大于等于
-lt:小于
-le:小于等于例如,检查变量num1是否大于变量num2:
num1=10
num2=5
test $num1 -gt $num2
如果num1大于num2,则返回值为0,否则为非零值。
2. 字符串比较:
* `=`:相等
* `!=`:不相等
* `-z`:长度为零(空字符串)
* `-n`:长度非零(非空字符串)例如,检查变量`str1`是否等于变量`str2`:
str1="Hello"
str2="World"
test $str1 = $str2
如果str1等于str2,则返回值为0,否则为非零值。
3. 文件测试:
* `-e`:文件或目录是否存在
* `-f`:是否为文件
* `-d`:是否为目录
* `-s`:文件大小是否大于零
* `-r`:是否有读取权限
* `-w`:是否有写入权限
* `-x`:是否有执行权限例如,检查文件`/path/to/file.txt`是否存在并且大小大于零:
test -e /path/to/file.txt -a -s /path/to/file.txt
cd /bin
if test -e ./bash
then
echo '文件已存在!'
else
echo '文件不存在!'
fi
cd /bin
if test -e ./notFile -o -e ./bash
then
echo '至少有一个文件存在!'
else
echo '两个文件都不存在'
fi
如果文件存在且大小大于零,则返回值为0,否则为非零值。
4. 逻辑操作:
* `&&`:逻辑与(AND)
* `||`:逻辑或(OR)例如,检查变量`num1`是否大于10并且小于20:
num1=15
test $num1 -gt 10 -a $num1 -lt 20
如果num1大于10且小于20,则返回值为0,否则为非零值。
5. 其他测试:
* `-o`:或(OR)运算符,用于多个条件之间的或运算。例如,检查变量`num1`是否大于10或小于5:
num1=3
test $num1 -gt 10 -o $num1 -lt 5