PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Script: Zwei Zahlen vergleichen?



b0fh
13.06.03, 18:18
Ich bastel mir gerade ein bash-script zusammen in dem ich unter anderem zwei Kommazahlen miteinander vergleichen will (z.B. 22.43 und 20.43). Mit "test $wert1 -gt $wert2" kann ich ja nur Integer vergleichen. Gibt es einen ähnlichen Befehl für Kommazahlen?

Der Gestreifte
13.06.03, 20:34
Da musst Du wohl "bc" nehmen.
Ich bin kein Experte dafür, aber etwas wie
wert1="456.78"; wert2=123;
wahr=$(echo "$wert1 > $wert2" | bc)
if [ $wahr = 1 ]; then
echo "\$wahr ist "$wahr", wert1 ist damit grösser"
else
echo "\$wahr ist "$wahr", wert2 ist damit grösser"
fi

wert1 muss in "" stehen, damit die Shell ihn überhaupt erkennt.
wahr ist das Ergebniss des von bc ausgewerteten Ausdrucks "$wert1 > $wert2", also 1. 1 ist hier wie bei C wahr, nicht mit den Bash-Exitcodes verwechseln.

Du könntest das ganze statt als pipe auch in eine Datei schreiben und diese dann vom Skript mit "bc -q datei" aufrufen.
Wie das genau geht, musst Du in der manpage zu bc nachsehen, bin selbst zu faul. IIRC muss dazu erst die Umgebungsvariable BC_ENV_ARGS=foo exportiert werden, damit die Variablen dann aus foo gelesen werden.

b0fh
13.06.03, 21:09
Ah, das erfüllt schon genau seinen Zweck, vielen Dank!