Shell 小数比较大小

前言

使用的时候发现 菜鸟教程的 shell 对于运算符的简单实例 中,没有对小数的大小判断,通过百度后啊,然后就有了该篇备忘。

正文

1
2
3
4
5
6
7
8
a=0.8
b=0.7
if [ $( expr "$a > $b" ) ]
then
echo 'a > b'
else
echo 'a < b'
fi

解析

使用的是 linux 拥有的一个 expr 这个玩意,有兴趣的可以直接在命令行玩玩。

设有 n1,n2 两个小数,要看谁大谁小就用以下命令,返回为 1 则为真。

expr n1 \> n2 等价于 echo n1 \> n2 bc

一些额外的东东

  • 在过程中发现一个问题,如果使用的是 \> ,会导致一直判断的结果不正确?

目前的理解是因为在 命令行 使用时,是因为转义,但是在 shell 中,属于画蛇添足。

  • 直接使用 >,也是会导致结果不正确,且一直生成 数字 为文件名的文件

因为是 $(),其实也是执行其中的命令,而 > 为将输出到右边的文件中,此时应当将 > 用单引号括起来,但测试后发现结果还是不正确,于是便把 n1 > n2 这一个作为整体用双引号(因为有变量,所以用双不用单)括起来。