【问题标题】:Bash: Integer expression expected [duplicate]Bash:需要整数表达式[重复]
【发布时间】:2013-07-31 07:09:28
【问题描述】:

我正在尝试执行简单的数学运算,以检查变量是否大于或等于“1.5” 但我收到了[: 2.41: integer expression expected

代码:

reSum=$(expr "scale=1;555/230" | bc)

if [ $reSum -ge "1.5" ]; then
...
fi

如何在 shell 脚本中进行浮点比较?

【问题讨论】:

  • From info expr < <= = == != >= >' Compare the arguments and return 1 if the relation is true, 0 otherwise. ==' 是='. expr' 的同义词,首先尝试将两个参数都转换为整数并进行数值比较;如果任一转换失败,它会使用 `LC_COLLATE' 语言环境指定的字符整理序列进行字典比较。

标签: linux bash awk


【解决方案1】:
if echo 555 230 | awk '{exit $1/$2 >= 1.5 ? 0 : 1}'
then
  # ...
fi

【讨论】:

  • 这个不需要外部包!
【解决方案2】:

编辑:

最适合我的解决方案:

reSum=$(expr "scale=1;555/230" | bc)

if (( `echo $reSum'>='1.5 | bc` )); then
  # anything
fi

正如 shellter 所指出的,[ $(expr "$reSum > 1.5" | bc) ] 实际上进行了字典比较。 所以,例如,expr "2.4 > 18 | bc" // =>0

但是,(( `echo $reSum'>='1.5 | bc` )) 进行浮点比较而不是字符串。

【讨论】:

    猜你喜欢
    • 2017-07-12
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 2016-04-30
    • 1970-01-01
    相关资源
    最近更新 更多