2013-08-08 7 views
9

Ich habe eine if-Anweisung, die ich ausführen muss, solange der Wert, den ich in meiner $counter Variable gespeichert habe, größer ist als 5.Variable mit Integer in der Shell vergleichen?

Hier ist der jeweilige Abschnitt meines aktuellen (nicht funktionierenden) Skript:

if $counter > 5 
then 
    echo "something" 
fi 

Der Fehler, den ich machen werde ist wahrscheinlich sehr offensichtlich, aber aus irgendeinem Grund konnte ich nicht die Lösung online finden. Danke!

Antwort

20

Nun, das ist ganz einfach:

if [ "$counter" -gt 5 ] 
then 
    echo "something" 
fi 
+1

Wenn Sie keine 'sh' Kompatibilität benötigen, ist es besser,' [['' '' '' '' '' 'zu verwenden. Siehe http://mywiki.wooledge.org/BashFAQ/031 – Thomas

+0

Natürlich. Es ist für die Kompatibilität gedacht, da er bash im Titel nicht erwähnt hat. – konsolebox

+0

@konsolebox, müssen Sie die Tags unter der Frage betrachten. Titel sind sehr oft irreführend. –

11

braucht Arithmetik zwischen (( und )) zu tun:

if (($counter > 5)) 

Übrigens können Sie auch die $ in Arithmetik wegzulassen, wenn es nicht zu halten, tut nicht weh.

+0

Ja aber, würde ich bedingter Ausdrücke argumentieren sollte in '[[]]' erfolgen. Also welcher sollte es wirklich sein? Ich würde '[[]]' auswählen. Siehe meine Argumente hier: http://stackoverflow.com/a/18568726/445221. (Kommentieren als Referenz). – konsolebox

Verwandte Themen