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
- PostgreSQL 原始碼解讀(196)- 浮點數比較SQL原始碼
- 微信小程式開發之——比較數字大小-配置檔案(2.4)微信小程式
- 【Java】浮點數相等性比較Java
- 不用做任何比較判斷運算子找出兩個整數中的較大的值
- Java如何正確比較浮點數Java
- 數字比較
- Java的BigDecimal比較大小JavaDecimal
- Shell指令碼——Linux系統中的時間猜數字指令碼Linux
- java比較日期大小Java
- python字串比較大小Python字串
- Python 解惑:整數比較Python
- JS變數比較陷阱JS變數
- mysql 字串型別的數值欄位按照數值的大小進行排序MySql字串型別排序
- Linux shell程式設計(一)shell指令碼中的變數詳解Linux程式設計指令碼變數
- BigDecimal加減乘除運算,保留2位小數點,初始化,與0的比較Decimal
- linux 中如何判斷變數是否為數值Linux變數
- [C++] 自定義C++比較器比較大小C++
- echo命令有什麼引數選項?linux學習什麼書比較好Linux
- shell指令碼中的變數及應用指令碼變數
- 我去,臉皮厚啊,你竟然使用==比較浮點數?
- 版本號比較大小問題
- L1-010 比較大小
- shell指令碼中main函式中$#獲取不到指令碼傳入引數個數淺析指令碼AI函式
- 3.帶你掌握Dart中的數值型別Dart型別
- SAP MM 計量單位EA的數量可以有小數點
- leetcode刷題844-比較含退格的字串(帶程式碼解析,帶知識點回顧)LeetCode字串
- C++與Rust變數宣告的比較C++Rust變數
- 【LeetCode(Java) - 259】較小的三數之和LeetCodeJava
- 字串大小寫轉換和字串的比較字串
- 有沒有學習Linux比較好的入門書籍Linux
- DateTime.Compare()比較時間大小
- iOS小數點格式化:最多保留兩位小數,小數點後末尾的0不要iOS
- Linux系統中Shell指令碼編寫的一點心得Linux指令碼