打印

shell中的浮点数比较

[复制链接]
371|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
keer_zu|  楼主 | 2022-12-19 14:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由于程序需要,我要判断一个浮点数是否大于另一个浮点数。
大概情况描述如下:
变量 mya的值为一个两位小数,这个值是这么取的:
Shell代码
[nigelzeng[url=home.php?mod=space&uid=588024]@ubuntu[/url] ~]$ 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  


使用特权

评论回复

相关帖子

沙发
keer_zu|  楼主 | 2022-12-19 14:54 | 只看该作者
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  


使用特权

评论回复
板凳
keer_zu|  楼主 | 2022-12-19 14:54 | 只看该作者
shell 会报错,提示integer expression expected,

只能判断整数,而不是5.7这个浮点数。

使用特权

评论回复
地板
keer_zu|  楼主 | 2022-12-19 14:55 | 只看该作者
但是shell里面是没有变量类型的,所以需要想个别的办法。

参考了CU里的大牛们的建议,这样写这个比较就可以了:
[nigelzeng@ubuntu ~]$if [ $(echo "$mya <= 4"|bc) = 1 ]; then echo "ok";else echo "fail";fi  

使用特权

评论回复
5
keer_zu|  楼主 | 2022-12-19 14:55 | 只看该作者
这里借助了bc这个命令(bc是一个计算器,Bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下。)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1352

主题

12436

帖子

53

粉丝