if文で小数点の値を比較する

if文で小数点の値を比較する

今日、2 つの値を比較しようとしていたのですが、驚いた結果が出ました。どこにもよい提案が見つかりませんでした。どなたか助けていただけませんか?

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

ここで結果がFalseであることに驚きました。

そこで次のことを試しました。

if [[ 10.94 > 10 ]]

結果はTrueでした。それで満足です。

再び私のスクリプトは以下のような特定の条件で欠陥を起こしました

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

関連情報