我想進行簡單的數學運算,以檢查變量是否大於或等於「1.5」 但我得到[: 2.41: integer expression expected
擊:整數表達式預期
代碼:
reSum=$(expr "scale=1;555/230" | bc)
if [ $reSum -ge "1.5" ]; then
...
fi
我如何在shell腳本中進行浮點比較?
我想進行簡單的數學運算,以檢查變量是否大於或等於「1.5」 但我得到[: 2.41: integer expression expected
擊:整數表達式預期
代碼:
reSum=$(expr "scale=1;555/230" | bc)
if [ $reSum -ge "1.5" ]; then
...
fi
我如何在shell腳本中進行浮點比較?
if echo 555 230 | awk '{exit $1/$2 >= 1.5 ? 0 : 1}'
then
# ...
fi
編輯:
爲我的作品最短的解決方案:
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`))
會進行浮點比較而不是字符串。
從'info expr'' <<= = == != > =>' 比較參數並返回1(如果關係爲真),否則返回0 。 '=='是'='的同義詞。 'expr'首先嚐試 將兩個參數轉換爲整數並進行數字比較;如果 任一轉換失敗,則使用「LC_COLLATE」 區域設置指定的字符比較序列使用 執行字典對比。 – shellter