Linux指令碼中帶有小數點的數值比較大小
1
2
3
4
5
6
7
8
9
10
11
|
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
沒辦法直接對帶有小數點的數進行對比
shell的 test 對於數值的判斷都是基於整數的,沒辦法對帶有小數的數值直接進行對比。
我們可以通過其它變通的方法來進行對比:
1、[[ ]]
1
|
[[ $a > $b ]] && echo "$a > $b"
|
2、expr方法
比較妙的方法 expr $a > $b
根據上面返回值來進行判斷,等於0表示$a < $b,或者$a > $b
1
2
3
4
5
6
7
|
a=1.2 b=1.1 if [ `expr $a > $b ` -eq 0 ];then
echo "$a < $b"
else echo "$a > $b"
fi |
注意:上面兩種方法如果位數不一致,就沒辦法正常對比。
3、bc計算(推薦使用)
1
2
3
4
5
6
7
8
|
a=1.0 b=1.1 if [ $( echo "$a > $b" |bc) -eq 0 ];then
echo "$a < $b"
else echo "$a > $b"
fi |
大於返回1,小於返回0
位數不一樣的有小數的數字,判斷是否相等:
1
2
3
4
5
6
7
8
|
a=1.0 b=1.0000 if [ $( echo "$a == $b" |bc) -eq 0 ];then
echo "$a != $b"
else echo "$a = $b"
fi |
還是這種方法比較好,推薦使用
4、awk
1
|
awk -v num1=6.6 -v num2=5.5 `BEGIN{print(num1>num2)?"0":"1"}`
|
如果num1>num2列印輸出0,否則輸出1
相關文章
- js精確比較浮點數大小JS
- C++ - 比較兩個浮點數大小C++
- vue中自定義指令,限制input值為number和小數點的位數Vue
- oracle中字串的大小比較,字串與數字的比較和運算Oracle字串
- 微信小程式開發之——比較數字大小-配置檔案(2.4)微信小程式
- 【Java】浮點數相等性比較Java
- PostgreSQL 原始碼解讀(196)- 浮點數比較SQL原始碼
- Linux Shell下變數比較Linux變數
- shell指令碼——比較兩個檔案大小、許可權指令碼
- 零值比較--BOOL,int,float,指標變數與零值比指標變數
- Python解惑:整數比較 is ==的比較Python
- Java如何正確比較浮點數Java
- 有點用的linux shell 指令碼Linux指令碼
- Java經典例項:比較浮點數Java
- Linux Shell 數字計算與比較Linux
- Oralce中設定小數點位數
- 一個比較好的shell指令碼指令碼
- JS變數比較陷阱JS變數
- 比較字串和數字串字串
- sort按照數值大小排序排序
- java比較日期大小Java
- mysql 字串型別的數值欄位按照數值的大小進行排序MySql字串型別排序
- Shell指令碼——Linux系統中的時間猜數字指令碼Linux
- Java的BigDecimal比較大小JavaDecimal
- Delphi中字串比較大小 VS Oracle-SQL中字串比較大小字串OracleSQL
- Pythondifflib字串比較指令碼Python字串指令碼
- 3.帶你掌握Dart中的數值型別Dart型別
- shell動態指令碼和pl/sql動態指令碼的比較指令碼SQL
- linux 中如何判斷變數是否為數值Linux變數
- Python 解惑:整數比較Python
- 比較字串和數字串(續)字串
- BigDecimal加減乘除運算,保留2位小數點,初始化,與0的比較Decimal
- python字串比較大小Python字串
- JavaScript字串如何比較大小JavaScript字串
- JavaScript 比較時間大小JavaScript
- shell指令碼中的變數及應用指令碼變數
- [C++] 自定義C++比較器比較大小C++
- shell指令碼中main函式中$#獲取不到指令碼傳入引數個數淺析指令碼AI函式