shell中的浮点数比较
博客分类:
Bash Shell
shell
比较浮点数
由于程序需要,我要判断一个浮点数是否大于另一个浮点数。
大概情况描述如下:
变量 mya的值为一个两位小数,这个值是这么取的:
Shell代码
[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代码
[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代码
[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