shell中的浮點數比較

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

大概情況描述如下:

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

 

[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進行判斷,

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

 

[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裏的大牛們的建議,這樣寫這個比較就可以了:

 

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

 

 

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

 

很久不寫shell。。。要慢慢熟悉了

 

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

 

--------------------------------------------

一天積累一點。

fighting……!

 

 

發佈了55 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章