使用大于时预期的bash整数表达式

时间:2015-09-10 07:21:36

标签: bash if-statement integer

我正在编写一个脚本,其中一部分会输出一个数字$ stats,即74.9,如果它不到100,那么它就会失败,如果不是,那就是通行证。我试过了

do stuff
done

echo $stats

if [ $stats -gt 100 ]; then
echo "PASS"
else
echo "FAIL"
fi

但是

失败了
72.4
./runme.sh: line 66: [: 72.4: integer expression expected
FAIL

1 个答案:

答案 0 :(得分:5)

72.4显然不是整数。 Bash只支持整数运算。

常见的解决方法包括:

  • 截断。 if [ ${stats%.*} -gt 100 ]; then ...
  • 使用外部工具进行适当的舍入。 if [ $(echo "$stats > 100.0" | bc) = 1 ]; then ......(可能会有更优雅的方式来表达这一点;但这通常很痛苦。)
  • 转换为整数。如果您有一个固定的小数位数,则可行。 if [ ${stats%.*}${stats#*.} -gt 10000 ]; then ...