shell中對小數進行比較的方法總結
阿新 • • 發佈:2019-01-30
寫個排程器需要對小數之間進行大小比較,經查詢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="."}{printlength($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
from:http://renylai.blogbus.com/logs/27962818.html