2013-07-30 83 views
2

我想進行簡單的數學運算,以檢查變量是否大於或等於「1.5」 但我得到[: 2.41: integer expression expected擊:整數表達式預期

代碼:

reSum=$(expr "scale=1;555/230" | bc) 

if [ $reSum -ge "1.5" ]; then 
... 
fi 

我如何在shell腳本中進行浮點比較?

+2

從'info expr'' <<= = == != > =>' 比較參數並返回1(如果關係爲真),否則返回0 。 '=='是'='的同義詞。 'expr'首先嚐試 將兩個參數轉換爲整數並進行數字比較;如果 任一轉換失敗,則使用「LC_COLLATE」 區域設置指定的字符比較序列使用 執行字典對比。 – shellter

回答

7
if echo 555 230 | awk '{exit $1/$2 >= 1.5 ? 0 : 1}' 
then 
    # ... 
fi 
1

編輯:

爲我的作品最短的解決方案:

reSum=$(expr "scale=1;555/230" | bc) 

if ((`echo $reSum'>='1.5 | bc`)); then 
    # anything 
fi 

正如shellter指出,[ $(expr "$reSum > 1.5" | bc) ]實際上做了字典比較。 因此,例如,expr "2.4 > 18 | bc" // =>0

但是,((`echo $reSum'>='1.5 | bc`))會進行浮點比較而不是字符串。