shell的 [ ] 對于數值的判斷都是基于整數的,如果碰到小數就無能為力了。
google了一把發現用awk的牛人多,不過發現一個兄弟的更加好。
if [ `expr $a \> $b` -eq 0 ];then
echo $b is bigger
else
echo $a is bigger
fi
通過expr來進行判斷,是以a 和 b 可以是小數。
#########################
上面這個是有bug的!!!!隻能比較第一位數字~~~~!坑爹!!!
正解如下:
在shell腳本中,無法對浮點數進行比較,如:
max=0.1
min=0.01
if [ "$max" -gt "$min" ]
then
echo "YES"
echo "NO"
這樣的比較,運作後得到錯誤:
line 4: [: 0.1: integer expression expected
因為bc和awk都支援浮點數,可以使用bc進行處理:
if [ `echo "$max > $min" | bc` -eq 1 ]
也可以寫成if [ $(echo "$max < $min"|bc) -eq 1 ]
驗證方法:
a=6.3;b=8.4;ret=`echo "$a > $b" | bc` ;echo $ret
如果傳回的是1,則a大,如果不是1,則b大
本文轉自 Tenderrain 51CTO部落格,原文連結:http://blog.51cto.com/tenderrain/1916029