2017-12-08 16 views
0

Derzeit schreibe ich ein Skript, das prüft, ob ein Betrag höher als der andere ist.Betrag in Bash überprüfen

if [ "324,53" -gt "325,00" ]; then 
    echo "Amount is higher!" 
else 
    echo "Amount is lower." 
fi 

Offensichtlich bin ich empfangen die Fehlermeldung: "Integer-Ausdruck erwartet", wenn diese ausgeführt wird. Ich habe versucht, sed 's/[^ 0-9] * // g'` zu verwenden, aber ich brauche die volle Nummer noch einmal zur weiteren Verwendung. Problem ist, dass ich den richtigen Weg nicht weiß, wie man das macht. Kann jemand einen Rat geben?

+0

Das stimmt! Das funktioniert. Vielen Dank! :-) – N3tM0nk

+0

ich bin mir nicht sicher, dass es funktioniert hat, kannst du deine lösung zeigen –

Antwort

1

Bash kann Gleitkommazahlen nicht verarbeiten. Sie müssen ein externes Tool verwenden, z. bc, aber Sie müssen Komma verwenden, nicht Komma:

if (($(bc <<< '324.53 > 325.00'))) ; then 

bc druckt 1, wenn die Bedingung erfüllt ist, und 0, wenn es falsch ist. $(...) nimmt die Ausgabe des Befehls und ((...)) interpretieren Sie es als eine Zahl, die für null und für alles andere falsch zurückgibt.