Bash:预期的整数表达式

时间:2013-07-30 22:52:19

标签: linux bash awk

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

代码:

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

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

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:1)

编辑:

对我有用的最短解决方案:

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` ))进行浮点比较而不是字符串。