比较实例:
比较实例:
如果test命令或者【】的表达式为真,才会执行其他操作
if[ "$string" = "some_string" ];then…
if [ $integer -eq 15 ];then…
if test $string = "some_string";then…
只有test结果为真,测试条件逻辑与才会执行其他代码
test $debug -eq 1 && echo some_debug_output
只有test结果为假,测试条件逻辑或才会执行其他代码
test $debug -eq 1 ||echo some_debug_output
加长版(加上{}成为组合命令):
test $debug -eq 1 && {
echo some_debug_output
echo some_more_debug_outbug
}
[ $debug -eq 1 ] && {
echo some_debug_output
echo some_more_debug_outbug
}
第一个满足执行第二个然后依次执行:
[ "$txt" ] && [ "$txt" != "$txt2" ] && some_text="$txt $txt2"
只要满足一个就成立,或者全部满足才成立:
if [ "$txt" != "$txt2" -a $num -eq $num2 ] || [ $num2 -eq 100 ];then…
其中-a是and,-o是or的意思
判断的格式:
if [ $answer = Y ]
在=号两边最好有空格,而且 [ ] 中有空格
test $debug -gt 0 && echo "Debug is on"
-gt可被,eq,lt,等替代。
test 命令可以用“[”该符号代替;
字符判断:
数字判断:
文件判断:
逻辑表达式判断:
包含了小数的比较测试:
需求:写个调度器需要对小数之间进行大小比较,经查询shell中 可以用 bc 对小数进行运算
example:
#echo 5.5+1.1 | bc
6.6
具体情况#man bc
然而对小数进行比较的相关方法有几个:
1. 自己的解决方法,判断小数点后最多有几位数(N),然后对将要比较的两个数值进行 乘与10的N次方
也就是将小数点去掉来进行比较(小数点后位数多的直接去掉小数点,少的用0补齐)
example:
6.6 x 10 >5.5x10 66>55
6.6666 x 10000 > 5.5 x10000 66666>55000
提示:使用 num=6.6666;echo $num | awk 'BEGIN{FS="."}{print length($2)}'判断小数点后的位数
当然,如果你确定小数点后最多肯定不会超过4位你可直接去掉10000,类推。。
2. 直接用awk
awk -v num1=6.6 -v num2=5.5 'BEGIN{print(num1>num2)?"0":"1"}'
如果num1>num2打印输出0,否则输出1
3.expr
比较妙的方法 expr $a \> $b
返回1表示$a>$b, 0表示$a<$b
# a=6.6 b=5.5;expr $a \> $b
1
4. br
用br其实也是可以实现
echo "6.6>5.5" |br
1
echo "5.5>6.6" | br
0
云平台开发运维解决方案@george.sre
GitHub: https://github.com/george-sre
欢迎交流~