我正在尝试使用这个命令行
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