比較實例:
比較實例:
如果test命令或者【】的表達式為真却紧,才會執(zhí)行其他操作
if[ "$string" = "some_string" ];then…
if [ $integer -eq 15 ];then…
if test $string = "some_string";then…
只有test結果為真,測試條件邏輯與才會執(zhí)行其他代碼
test $debug -eq 1 && echo some_debug_output
只有test結果為假幅疼,測試條件邏輯或才會執(zhí)行其他代碼
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
}
第一個滿足執(zhí)行第二個然后依次執(zhí)行:
[ "$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 命令可以用“[”該符號代替疆栏;
字符判斷:
數(shù)字判斷:
文件判斷:
邏輯表達式判斷:
包含了小數(shù)的比較測試:
需求:寫個調度器需要對小數(shù)之間進行大小比較,經(jīng)查詢shell中 可以用 bc 對小數(shù)進行運算
example:
#echo 5.5+1.1 | bc
6.6
具體情況#man bc
然而對小數(shù)進行比較的相關方法有幾個:
1. 自己的解決方法惫谤,判斷小數(shù)點后最多有幾位數(shù)(N)壁顶,然后對將要比較的兩個數(shù)值進行 乘與10的N次方
也就是將小數(shù)點去掉來進行比較(小數(shù)點后位數(shù)多的直接去掉小數(shù)點,少的用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)}'判斷小數(shù)點后的位數(shù)
當然溜歪,如果你確定小數(shù)點后最多肯定不會超過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其實也是可以實現(xiàn)
echo "6.6>5.5" |br
1
echo "5.5>6.6" | br
0
云平臺開發(fā)運維解決方案@george.sre
GitHub: https://github.com/george-sre
歡迎交流~