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"
else
echo "no"
fi這樣的比較,執行後得到錯誤:
line 4: [: 0.1: integer expression expected
因為bc和awk都支援浮點數,可以使用bc進行處理:
max=0.1
min=0.01
if [ `echo "$max > $min" | bc` -eq 1 ]
then
echo "yes"
else
echo "no"
fi也可以寫成if [ $(echo "$max < $min"|bc) -eq 1 ]
驗證方法:
a=6.3;b=8.4;ret=`echo "$a > $b" | bc` ;echo $ret
如果返回的是1,則a大,如果不是1,則b大
php小數比較
浮點型數字不能進行比較,因為存在精確度的問題,所以可能比較出來的結果不符 解決問題用到的函式 strcmp 比較兩個字串 區分大小寫 strcmp string1,string2 語法 引數 描述 string1 必需。規定要比較的第乙個字串。string2 必需。規定要比較的第二個字串。返回值 0...
Linux Shell 小數比較
bin bash expr 方法是錯誤的,在比較相同位數時可以,當位數不同就會出錯,如100.00 70.00就會得出錯誤的結果 a 123 b 123 c 99.99 rat awk begin 100 echo rat if expr 70.00 eq 0 then echo 0 else ec...
Shell If 命令操作
a file 如果 file 存在則為真。b file 如果 file 存在且是乙個塊特殊檔案則為真。c file 如果 file 存在且是乙個字特殊檔案則為真。d file 如果 file 存在且是乙個目錄則為真。e file 如果 file 存在則為真。f file 如果 file 存在且是乙個...