comparando valores de pontos decimais na instrução if

comparando valores de pontos decimais na instrução if

Hoje estava tentando comparar dois valores e surpreendi o que vi. Não encontrei nenhuma boa sugestão em lugar nenhum. Alguém poderia ajudar?

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

Estou surpreso aqui que o resultado seja falso.

Então tentei o seguinte.

if [[ 10.94 > 10 ]]

O resultado veio como True. Eu estava bem com isso.

Mais uma vez, meu script apresentou uma falha em uma condição específica, como abaixo

if [[ 5.15 > 10 ]]
  echo True
fi

Aqui o resultado veio como True.

Por quê? Existe alguma ideia melhor, que compare os valores decimais de maneira adequada?

Responder1

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

informação relacionada