shell 8test命令

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

有一个存在

猜你喜欢

转载自www.cnblogs.com/csj2018/p/9581184.html