
shell 进行条件判断的两种方式
test 的[操作符选项] 表达式
[操作符选项 表达式] 两边要有空格
boole true(真) false(假)
返回码0 0 非0 Linux系统 shell脚本
1 0 Java c
文件测试操作符
-e 测试 指定的文件或者目录是否存在
-f 测试 指定的对象是否为文件;指定的文件是否存在
-d 测试 指定的对象是否为目录;指定的目录是否存在
-r 测试 当前用户是否有读权限
-w 测试 当前用户是否有写权限
-x 测试 当前用户是否有执行权限
-L 测试文件是否为符号链接(软链接文件)
[ -f /opt/abc.txt ]
整数值比较
操作符
-eq 等于 ==
-gt 大于 >
-lt 小于 <
-ge 大于等于 >=
-le 小于等于 <=
-ne 不等于 !=
[ 整数变量1 操作符 整数变量2 ]
[ 10 -gt 20 ]
字符串比较
[ “字符串1” = “字符串2” ] 或者 [ “字符串1” == “字符串2” ]
[ “字符串1” != “字符串2” ]
[ -z “字符串” ] -z:判断字符串是否为空,或者 指定的变量是否为空值
[ -n “字符串” ] -n:检查是否有字符串存在
浮点数的运算
echo “浮点运算字符串” | bc
awk ‘BEGIN {print 浮点运算字符串}’
逻辑测试
-a && 且,前后条件都要成立
-o || 或,只需前后条件中一个成立
[ 表达式1 ] && [ 表达式2 ] 等同于 [ 表达式1 -a 表达式2 ] [[ 表达式1 && 表达式2 ]]
[ 表达式1 ] || [ 表达式2 ] 等同于 [ 表达式1 -o 表达式2 ] [[ 表达式1 || 表达式2 ]]
三元运算符
java,c
条件表达式?a:b
当条件表达式为真时,取a值;当条件表达式为假时,取b值
shell
[ 表达式 ] && a || b
双分支
if [ 表达式 ];then
…
else
…
fi
单分支
if [ 表达式 ];then
…
fi
[ 表达式 ] && a
[ 表达式 ] || a
[ 表达式 ] && a || b
多分支
if [ 表达式 ];then
…
elif [ 表达式 ];then
…
elif [ 表达式 ];then
…
[else]
fi
case 变量 in
模式1)
…
;;
模式2)
…
;;
…
*)
…
esca
a=10
b=20
临时变量 tmp