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