shell if 小数 比较

本文介绍如何在Shell脚本中实现浮点数的大小比较,并提供使用bc命令进行数值判断的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shell的 [ ] 对于数值的判断都是基于整数的,如果碰到小数就无能为力了。
google了一把发现用awk的牛人多,不过发现一个兄弟的更加好。

  1. if [ `expr $a \> $b` -eq 0 ];then

  2.     echo $b is bigger

  3. else

  4.     echo $a is bigger

  5. fi


通过expr来进行判断,所以a 和 b 可以是小数。

#########################

上面这个是有bug的!!!!只能比较第一位数字~~~~!坑爹!!!

#########################

正解如下:

在shell脚本中,无法对浮点数进行比较,如:

max=0.1

min=0.01

if [ "$max" -gt "$min" ]

then

echo "YES"

else

echo "NO"

fi

这样的比较,运行后得到错误:

line 4: [: 0.1: integer expression expected

因为bc和awk都支持浮点数,可以使用bc进行处理:

max=0.1

min=0.01

if [ `echo "$max > $min" | bc` -eq 1 ]

then

echo "YES"

else

echo "NO"

fi

也可以写成if [ $(echo "$max < $min"|bc) -eq 1 ]

验证方法:

a=6.3;b=8.4;ret=`echo "$a > $b" | bc` ;echo $ret 

如果返回的是1,则a大,如果不是1,则b大





      本文转自Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1916029,如需转载请自行联系原作者




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值