2

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

代码:

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

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

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

4

2 回答 2

9
if echo 555 230 | awk '{exit $1/$2 >= 1.5 ? 0 : 1}'
then
  # ...
fi
于 2013-07-30T23:04:15.843 回答
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` ))进行浮点比较而不是字符串。

于 2013-07-30T23:15:08.400 回答