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……!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值