shell:比较两个数的大小

shell中比较两个数的大小,一般可以使用大小于号:">"、"<"、">="、"<=",和-ge、-gt、-le、-lt

比如:大于输出1,否则输出0

[root@localhost64 ~]# [ 3 -gt 2 ]&& echo 1 ||echo 0
1
[root@localhost64 ~]# [ 3 -gt 20 ] && echo 1 ||echo 0
0

[root@localhost64 ~]# [ 3 > 2 ]&& echo 1 ||echo 0
1

这种对于-gt的比较方式来说只能比较整数的大小,如果遇到浮点数,或者说是小数,就会报错:

[root@localhost64 ~]# [ 3.0 -gt 2.0 ]&& echo 1 ||echo 0
-bash: [: 3.0: integer expression expected
0

对于大于号这种方式,只能说"看起来没问题"

[root@localhost64 ~]# [ 3.0 > 2.0 ]&& echo 1 ||echo 0
1

问题就在于:它的浮点数比较是按位比的

[root@localhost64 ~]# [ 3.0 > 20.0 ] && echo 1 ||echo 0
1
[root@localhost64 ~]# [ 3.0 > 3.12 ] && echo 1 ||echo 0
1

3.0的第一位是3, 20.0的第一位是2,3>2所以被判定为3.0>20.0,判断出错
在这里插入图片描述所以进行浮点数大小的比较,需要用到bc这个命令:
bc 命令是任意精度计算器语言,通常在linux下当计算器用,类似基本的计算器, 使用这个计算器可以做基本的数学运算
这样就可以了:

[root@localhost64 ~]# [ `echo "3.0 > 20.0"|bc` -eq 1 ]  && echo 1 ||echo 0
0
[root@localhost64 ~]# [ `echo "3.0 > 3.12"|bc` -eq 1 ]  && echo 1 ||echo 0
0

echo “3.0 > 20.0”|bc 这条命令,如果条件成立,返回的结果就是1,否则就是0
使用bc命令也可以实现加减乘除,除法是整除:

[root@localhost64 ~]# echo "2.00 /  4.00"|bc
0
[root@localhost64 ~]# echo "2.00 + 4.00"|bc
6.00
[root@localhost64 ~]# echo "2.00 - 4.00"|bc
-2.00
[root@localhost64 ~]# echo "2.00 * 4.00"|bc
8.00
[root@localhost64 ~]# echo "2.00 / 4.00"|bc
0
[root@localhost64 ~]# echo "10.00 / 4.00"|bc
2

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值