13.2.5 Bedingte Ausdrucke in der Shell
Jedes Kommando gibt einen Exit-Status zur�ck, was f�r einen
bedingten Ausdruck verwendet werden kann:
-
Erfolg: 0 (wahr)
-
Fehler: 1–255 (falsch)
Es ist zu beachten, dass die Verwendung des 0 Werts im Sinne von
"wahr" sich von den �blichen Konventionen in anderen Bereichen der
Programmierung unterscheidet. Auch ist `[' das �quivalent des
test
-Kommandos, das sein Argument bis zu `]' als bedingten
Ausdruck auswertet.
Grundlegende bedingte Ausdrucke zum Einpr�gen sind:
Kommando && bei_Erfolg_dies_starten || true
Kommando || bei_Misserfolg_dies_starten
if [ bedingter_Ausdruck ]; then
bei_Erfolg_dies_starten
else
bei_Misserfolg_dies_starten
fi
Es wurde || true verwendet, um sicherzustellen, dass das
Shellskript in dieser Zeile nicht versehentlich abgebrochen wird, wenn die
Shell (oder set
) mit der Option -e gestartet wird.
Dateivergleichsoperatoren im bedingten Ausdruck sind:
Ausdruck Wahr wenn ...
-e Datei Datei existiert.
-d Datei Datei existiert und ein Verzeichnis ist.
-f Datei Datei existiert und eine regul�re Datei ist.
-w Datei Datei existiert und schreibbar ist.
-x Datei Datei existiert und ausf�hrbar ist.
Datei1 -nt Datei2 Datei1 neuer als Datei2 ist. (Modifizierungszeit)
Datei1 -ot Datei2 Datei1 �lter als Datei2 ist. (Modifizierungszeit)
Datei1 -ef Datei2 beide die selbe Device- und Inode-Nummer haben.
Stringvergleichsoperatoren im bedingten Ausdruck sind:
Ausdruck Wahr wenn ...
-z str die L�nge von str Null ist.
-n str die L�nge von str nicht Null ist.
str1 == str2 str1 und str2 gleich sind.
str1 = str2 str1 und str2 gleich sind.
("=" sollte statt "==" f�r POSIX-Konformit�t verwendet werden)
str1 != str2 str1 und str2 ungleich sind.
str1 < str2 str1 vor str2 einsortiert wird (locale abh�ngig).
str1 > str2 str1 nach str2 einsortiert wird (locale abh�ngig).
Arithmetische Ganzzahlvergleiche im bedingten Ausdruck sind
-eq, -ne, -lt, -le,
-gt und -ge.