shell if 小数 比较

简介:

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

相关文章
|
6月前
|
Shell
在Shell脚本中的if语句
在Shell脚本中的if语句
94 1
|
Shell 分布式数据库
shell脚本中if判断‘-a‘ - ‘-z‘含义
shell脚本中if判断‘-a‘ - ‘-z‘含义
|
5月前
|
Shell
Shell脚本之条件语句if总结
Shell脚本之条件语句if总结
|
5月前
|
Shell Linux BI
linux shell脚本中 if 条件判断
linux shell脚本中 if 条件判断
37 0
|
6月前
|
Shell
shell 学习(四)【if语法 for循环控制】
shell 学习(四)【if语法 for循环控制】
43 0
|
6月前
|
Shell
在Shell脚本中,使用`if`语句进行复杂的条件判断
在Shell脚本中,使用`if`语句进行复杂的条件判断
160 2
|
6月前
|
存储 Shell
Shell编程自动化之if、for、while和函数
本文主要介绍了Shell编程自动化之if、for、while和函数,并结合实例测试。
72 3
|
运维 Shell 应用服务中间件
【运维知识高级篇】超详细的Shell编程讲解3(if判断+Shell菜单+case流程判断+批量创建删除用户+猜数字小游戏)
【运维知识高级篇】超详细的Shell编程讲解3(if判断+Shell菜单+case流程判断+批量创建删除用户+猜数字小游戏)
171 1
|
应用服务中间件 Shell nginx
shell利用cat与if比较实现nginx启停
shell利用cat与if比较实现nginx启停
104 0
|
监控 关系型数据库 MySQL
Shell脚本:if条件语句的了解与使用
Shell脚本:if条件语句的了解与使用
114 1