Bedingungen in der Shell – Linux
Dieser Beitrag wurde vor mehr als drei Monaten veröffentlicht. Bedenke bitte, dass die hier angebotene Information nicht mehr aktuell und gültig sein könnte. Informiere dich daher bitte auch an anderer Stelle über dieses Thema. Sollten sich neue Informationen ergeben haben, so kannst du mich auch gerne auf diese über einen Kommentar hinweisen. Vielen Dank!Hier soll an einigen Beispielen klar werden, wie man Bedingungen in z.B. Shell-Abfragen (if) einbaut.
Dateien:
-d file
-> file existiert und ist ein Verzeichnis
-e file
-> file existiert
-f file
-> file existiert und ist regulär
Beispiel:
if [ -f /etc/issue ] ; then cat /etc/issue | awk {'print $3'}; fi
-s file
-> file existiert und ist nicht leer
-r file
-> file existiert und ist lesbar
-w file
-> file existiert und ist beschreibbar
datei1 -nt datei2
-> datei1 ist jünger als datei2
datei1 -ot datei2
-> datei1 ist älter als datei2
Strings:
-z string
-> string ist leer
-n string
-> string ist nicht leer
Beispiel:
test="Hallo"
if [ -n $test ] ; then echo $test; fi
unset test
if [ -n $test ] ; then echo $test; fi
s1 == s2
-> s1 ist gleich s2
s1 != s2
-> s1 ist ungleich s2
s1 < s2
-> s1 ist kleiner s2 (bzgl. Sortierung)
s1 > s2
-> s1 ist größer s2
Arithmetik:
n1 -eq n2
-> n1 ist gleich n2
Beispiel:
a=5
b=5
if [ $a -eq $b ] ; then echo -e "es sind die gleichen Zahlen"; else echo "es sind nicht die gleichen Zahlen" ;fi
b=4
if [ $a -eq $b ] ; then echo -e "es sind die gleichen Zahlen"; else echo "es sind nicht die gleichen Zahlen" ;fi
n1 -ne n2
-> n1 ist ungleich n2
n1 -lt n2
-> n1 ist kleiner n2
n1 -le n2
-> n1 ist kleiner/gleich n2
n1 -gt n2
-> n1 ist größer n2
n1 -ge n2
-> n1 ist größer/gleich n2
Logik:
expr1 -a expr2
-> Ausdruck expr1 UND expr2
expr1 -o expr2
-> Ausdruck expr1 ODER expr2

