由於程序需要,我要判斷一個浮點數是否大於另一個浮點數。
大概情況描述如下:
變量 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……!