сравнение значений десятичной точки в операторе 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

Здесь результат оказался истинным.

Как так? Есть ли какая-то лучшая идея, которая будет сравнивать десятичные значения правильным образом?

решение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

Связанный контент