Expr 命令返回 false

Expr 命令返回 false

我正在尝试使用这个命令行

expr 916.1 '<' 1024

但我收到了false回复(返回 1)

答案1

expr不支持浮点数:

操作数可以是整数或字符串。整数由一个或多个十进制数字组成,前导字符为“-”。expr 根据所应用的运算,将操作数位置上的任何内容转换为整数或字符串。

expr 首先尝试将两个参数都转换为整数,然后进行数字比较;如果任一转换失败,它将使用 LC_COLLATE 区域设置指定的字符排序序列进行字典比较。

如果要比较浮点数,请使用类似的方法bc(使用“0 为假,1 为真”约定):

expr1 < expr2
      The result is 1 if expr1 is strictly less than expr2.

所以:

$ bc <<< '(916.1 < 1024)'
1
$ if [ "$(bc <<< '(916.1 < 1024)')" -eq 1 ]; then echo yes; else echo no; fi
yes

相关内容