我想进行简单的数学运算,以检查变量是否大于或等于“1.5” 但我得到[: 2.41: integer expression expected
击:整数表达式预期
代码:
reSum=$(expr "scale=1;555/230" | bc)
if [ $reSum -ge "1.5" ]; then
...
fi
我如何在shell脚本中进行浮点比较?
我想进行简单的数学运算,以检查变量是否大于或等于“1.5” 但我得到[: 2.41: integer expression expected
击:整数表达式预期
代码:
reSum=$(expr "scale=1;555/230" | bc)
if [ $reSum -ge "1.5" ]; then
...
fi
我如何在shell脚本中进行浮点比较?
if echo 555 230 | awk '{exit $1/$2 >= 1.5 ? 0 : 1}'
then
# ...
fi
编辑:
为我的作品最短的解决方案:
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`))
会进行浮点比较而不是字符串。
从'info expr'' <<= = == != > =>' 比较参数并返回1(如果关系为真),否则返回0 。 '=='是'='的同义词。 'expr'首先尝试 将两个参数转换为整数并进行数字比较;如果 任一转换失败,则使用“LC_COLLATE” 区域设置指定的字符比较序列使用 执行字典对比。 – shellter