shell if 浮點數比較


由於程序需要,我要判斷一個浮點數是否大於另一個浮點數。

大概情況描述如下:

變量 mya的值為一個兩位小數,這個值是這么取的:

 

Shell代碼   收藏代碼
  1. [nigelzeng@ubuntu ~]$ df -h  
  2. Filesystem            Size  Used Avail Use% Mounted on  
  3. /dev/sda1            5.7G  3.0G  2.5G  55% /  
  4.   
  5. [nigelzeng@ubuntu ~]$df -h | grep xvda2 | awk '{print $2}' | sed 's/G//'  
  6. 5.7  

 

[nigelzeng@ubuntu ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1            5.7G  3.0G  2.5G  55% /

[nigelzeng@ubuntu ~]$df -h | grep xvda2 | awk '{print $2}' | sed 's/G//'
5.7

 

 mya=` df -h | grep xvda2 | awk '{print $2}' | sed 's/G//' `

 

然后我希望讓它跟4進行判斷,

一開始是想利用整數來進行判斷,但是不行:

 

Shell代碼   收藏代碼
  1. [nigelzeng@ubuntu ~]$if [ $mya -le 4 ]; then echo "ok";else echo "fail"; fi  
  2. -bash: [: 5.7: integer expression expected  

 

[nigelzeng@ubuntu ~]$if [ $mya -le 4 ]; then echo "ok";else echo "fail"; fi
-bash: [: 5.7: integer expression expected

 

 shell 會報錯,提示integer expression expected,

只能判斷整數,而不是5.7這個浮點數。

 

但是shell里面是沒有變量類型的,所以需要想個別的辦法。

參考了CU里的大牛們的建議,這樣寫這個比較就可以了:

 

Shell代碼   收藏代碼
  1. [nigelzeng@ubuntu ~]$if [ $(echo "$mya <= 4"|bc) = 1 ]; then echo "ok";else echo "fail";fi  

 

[nigelzeng@ubuntu ~]$if [ $(echo "$mya <= 4"|bc) = 1 ]; then echo "ok";else echo "fail";fi

 

 

這里借助了bc這個命令(bc是一個計算器,Bash內置了對整數四則運算的支持,但是並不支持浮點運算,而bc命令可以很方便的進行浮點運算,當然整數運算也不再話下。)

 

 

參考:http://bbs.chinaunix.net/thread-1093131-1-1.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM