if [ $a -lt 100 -a $b -gt 15 ] then echo"$a 小于 100 且 $b 大于 15 :返回 true" else echo"$a 小于 100 且 $b 大于 15 :返回 false" fi if [ $a -lt 100 -o $b -gt 100 ] then echo"$a 小于 100 或 $b 大于 100 :返回 true" else echo"$a 小于 100 或 $b 大于 100 :返回 false" fi if [ $a -lt 5 -o $b -gt 100 ] then echo"$a 小于 5 或 $b 大于 100 :返回 true" else echo"$a 小于 5 或 $b 大于 100 :返回 false" fi
if [ $a -eq $b ] then echo"$a -eq $b : a 等于 b" else echo"$a -eq $b: a 不等于 b" fi if [ $a -ne $b ] then echo"$a -ne $b: a 不等于 b" else echo"$a -ne $b : a 等于 b" fi if [ $a -gt $b ] then echo"$a -gt $b: a 大于 b" else echo"$a -gt $b: a 不大于 b" fi if [ $a -lt $b ] then echo"$a -lt $b: a 小于 b" else echo"$a -lt $b: a 不小于 b" fi if [ $a -ge $b ] then echo"$a -ge $b: a 大于或等于 b" else echo"$a -ge $b: a 小于 b" fi if [ $a -le $b ] then echo"$a -le $b: a 小于或等于 b" else echo"$a -le $b: a 大于 b" fi
if [ $a = $b ] then echo"$a = $b : a 等于 b" else echo"$a = $b: a 不等于 b" fi if [ $a != $b ] then echo"$a != $b : a 不等于 b" else echo"$a != $b: a 等于 b" fi if [ -z $a ] then echo"-z $a :字符串长度为 0" else echo"-z $a :字符串长度不为 0" fi if [ -n "$a" ] then echo"-n $a :字符串长度不为 0" else echo"-n $a :字符串长度为 0" fi if [ $a ] then echo"$a :字符串不为空" else echo"$a :字符串为空" fi
file="/var/www/test/test.sh" if [ -r $file ] then echo"文件可读" else echo"文件不可读" fi if [ -w $file ] then echo"文件可写" else echo"文件不可写" fi if [ -x $file ] then echo"文件可执行" else echo"文件不可执行" fi if [ -f $file ] then echo"文件为普通文件" else echo"文件为特殊文件" fi if [ -d $file ] then echo"文件是个目录" else echo"文件不是个目录" fi if [ -s $file ] then echo"文件不为空" else echo"文件为空" fi if [ -e $file ] then echo"文件存在" else echo"文件不存在" fi
test 命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值,字符和文件三个方面的测试。
数值测试
1 2 3 4 5 6 7 8
num1=100 num2=100 iftest $[num1] -eq $[num2] then echo'两个数相等!' else echo'两个数不相等!' fi
输出结果:
1
两个数相等!
字符串测试
参数
说明
-z 字符串
字符串的长度为零则为真
-n 字符串
字符串的长度不为零则为真
实例
1 2 3 4 5 6 7 8
num1="test1" num2="test2" iftest$num1 = $num2 then echo'两个字符串相等!' else echo'两个字符串不相等!' fi
输出结果:
1
两个字符串不相等!
文件测试
参数
说明
-e 文件名
如果文件存在则为真
-r 文件名
如果文件存在且可读则为真
-w 文件名
如果文件存在且可写则为真
-x 文件名
如果文件存在且可执行则为真
-s 文件名
如果文件存在且至少有一个字符则为真
-d 文件名
如果文件存在且为目录则为真
-f 文件名
如果文件存在且为普通文件则为真
-c 文件名
如果文件存在且为字符型特殊文件则为真
-b 文件名
如果文件存在且为块特殊文件则为真
实例
1 2 3 4 5 6 7
cd /bin iftest -e ./bash then echo'文件已存在!' else echo'文件不存在!' fi
输出结果:
1
文件已存在!
另外,Shell 还提供了与( -a ),或( -o ),非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:! 最高,-a 次之,-o最低,例如:
1 2 3 4 5 6 7
cd /bin iftest -e ./notFile -o -e ./bash then echo'至少有一个文件存在!' else echo'两个文件都不存在' fi