Linux脚本中带有小数点的数值比较大小

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-22 23:11   11   0

1

2

3

4

5

6

7

8

9

10

11

a=1.2

b=1.1

如果直接用

if [ $a -gt $b ];then

echo "$a > $b"

fi

或者

if [ $a > $b ];then

echo "$a > $b"

fi

都会提示语法错误
[: 1.2: integer expression expected
没办法直接对带有小数点的数进行对比

shell的 test 对于数值的判断都是基于整数的,没办法对带有小数的数值直接进行对比。

我们可以通过其它变通的方法来进行对比:

1、[[ ]]

1

[[ $a > $b ]] && echo "$a > $b"

2、expr方法

比较妙的方法 expr $a \> $b
根据上面返回值来进行判断,等于0表示$a < $b,或者$a > $b

1

2

3

4

5

6

7

a=1.2

b=1.1

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

echo "$a < $b"

else

echo "$a > $b"

fi

注意:上面两种方法如果位数不一致,就没办法正常对比。

3、bc计算(推荐使用)

转载于:https://my.oschina.net/u/3611008/blog/2049273

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP