在 if 语句中比较小数点值

在 if 语句中比较小数点值

今天我试图比较两个值,并对我所看到的结果感到惊讶。我在任何地方都没有找到任何好的建议。有人可以帮忙吗?

if [ 10.94 -gt 10 ]
then
  echo True
else
  echo False
fi

我很惊讶结果是错误的。

然后我尝试了以下方法。

if [[ 10.94 > 10 ]]

结果为真。我对此很好。

我的脚本在特定条件下再次出现缺陷,如下所示

if [[ 5.15 > 10 ]]
  echo True
fi

这里的结果是 True。

怎么会?有没有更好的想法,可以以正确的方式比较十进制值?

答案1

echo | awk '{if (10.1 > 10.0) {print "True"} else {print "False"} }' 
True

if [ $(echo "10.12 < 10.13"|bc -l) -eq 1 ];then echo "True"; else echo "False"; fi
True

相关内容