linux比较小数大小,带有小数点的数值对比大小
a=1.2
b=1.1
如果直接用
if [ $a -gt $b ];then
echo "$a > $b"
fi
或者
if [ $a > $b ];then
echo "$a > $b"
fi
都會提示語法錯誤
[: 1.2: integer expression expected
沒辦法直接對帶有小數點的數進行對比
轉載本站文章請注明出處:haibing.org
shell的 test 對于數值的判斷都是基于整數的,沒辦法對帶有小數的數值直接進行對比。
我們可以通過其它變通的方法來進行對比:
1、[[ ? ]]
[[ $a > $b ]] && echo "$a > $b"
2、expr方法
比較妙的方法 expr $a \> $b
根據上面返回值來進行判斷,等于0表示$a < $b,或者$a > $b
轉載本站文章請注明出處:haibing.org
a=1.2
b=1.1
if [ `expr $a \> $b` -eq 0 ];then
echo "$a < $b"
else
echo "$a > $b"
fi
注意:上面兩種方法如果位數不一致,就沒辦法正常對比。
轉載本站文章請注明出處:haibing.org
3、bc計算(推薦使用)
a=1.0
b=1.1
if [ $(echo "$a > $b"|bc) -eq 0 ];then
echo "$a < $b"
else
echo "$a > $b"
fi
大于返回1,小于返回0
位數不一樣的有小數的數字,判斷是否相等:
a=1.0
b=1.0000
if [ $(echo "$a == $b"|bc) -eq 0 ];then
echo "$a != $b"
else
echo "$a = $b"
fi
還是這種方法比較好,推薦使用
4、awk
awk -v num1=6.6 -v num2=5.5 'BEGIN{print(num1>num2)?"0":"1"}'
如果num1>num2打印輸出0,否則輸出1
總結
以上是生活随笔為你收集整理的linux比较小数大小,带有小数点的数值对比大小的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编程方法学9:字符串
- 下一篇: csdn编辑器模板2