Die Bash (test) kann an sich nur Ganzzahlen vergleichen, übergibt man eine Fließkommazahl, führt das zu einem Fehler.
if [ 12.3 -gt 12 ]; then echo '>'; fi
bash: [: 12.3: integer expression expected
Möchte man doch schnell mal zwei floats vergleichen, geht das ganz einfach mit
bc. Zuerst interaktiv:
xela@linux:~> bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
if (10.123 > 10.1119) 1 else 0
1
quit
Um diese Art Test in einem Skript verwenden zu können, nehmen wir "echo" zum Übergeben an bc:
if [ $(echo "if (19 >= 19.00000) 1 else 0" | bc) -eq 1 ] ; then echo größergleich; else echo kleiner; fi
Wichtig dabei ist das "
else 0", damit
auf alle Fälle ein Integer (Ganzzahl) zurückgegeben wird, den
test (also
[ ) dann vergleichen kann.
So richtig Sinn macht das klarerweise erst mit Variablen:
a='3.333'; b='3.2176'; if [ $(echo "if (${a} > ${b}) 1 else 0" | bc) -eq 1 ] ; then echo größer; else echo kleiner; fi