Expr 命令返回 false

khi*_*mid 3 command-line

我正在尝试使用此命令行

expr 916.1 '<' 1024
Run Code Online (Sandbox Code Playgroud)

但我得到了false回应(返回 1)

mur*_*uru 12

expr 不支持浮点数:

操作数是整数或字符串。整数由一位或多位十进制数字组成,带有可选的前导“-”。expr 将出现在操作数位置的任何内容转换为整数或字符串,具体取决于对其应用的操作。

并且

expr 首先尝试将两个参数转换为整数并进行数字比较;如果任一转换失败,它将使用 LC_COLLATE 语言环境指定的字符整理序列进行字典比较。

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

expr1 < expr2
      The result is 1 if expr1 is strictly less than expr2.
Run Code Online (Sandbox Code Playgroud)

所以:

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

  • @khiatabdelhamid 停止发布多条评论。此外,单引号中不会发生变量扩展。使用双引号。 (4认同)