Vergleichen von Dezimalstellenwerten in einer if-Anweisung

Vergleichen von Dezimalstellenwerten in einer if-Anweisung

Heute habe ich versucht, zwei Werte zu vergleichen, und war überrascht, was ich sah. Ich habe nirgendwo einen guten Vorschlag gefunden. Kann mir bitte jemand helfen?

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

Ich bin überrascht, dass das Ergebnis hier Falsch ist.

Dann habe ich folgendes versucht.

if [[ 10.94 > 10 ]]

Das Ergebnis war „True“. Ich war damit einverstanden.

Wieder einmal wies mein Skript unter einer bestimmten Bedingung einen Fehler auf, wie unten

if [[ 5.15 > 10 ]]
  echo True
fi

Hier lautete das Ergebnis „True“.

Wie kommt das? Gibt es eine bessere Idee, die die Dezimalwerte auf angemessene Weise vergleicht?

Antwort1

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

verwandte Informationen