Conditional Expression
Ein Conditional Expression ist ein unary expression oder binary expression.
Er formuliert eine Bedindung diese evaluiert zu TRUE oder FALSE.
Ein derartiger Expression wird i.d.R. eingesetzt in
test if while until
Die folgenden Kombinationen können verwendet werden, um den Ausdruck zu bilden.
Dateioptionen Prüfung
-r file Datei vorhanden und Leserechte gegeben
-w file Datei vorhanden und Schreibrechte gegeben
-x file Datei vorhanden und execute Bit gesetzt. Wenn File ein Directory
ist, dann kann ein search durchgeführt werden.
-f file Datei vorhanden und regular file
-d file Datei vorhanden und directory
-c file Datei vorhanden und character special file
-b file Datei vorhanden und block special file
-p file Datei vorhanden und named pipe (fifo)
-u file Datei vorhanden und set-user-id Bit gesetzt
-g file Datei vorhanden und set-group-id Bit gesetzt
-k file Datei vorhanden und sticky Bit gesetzt
-s file Datei vorhanden und Länge grösser als 0
-L file Datei vorhanden und ist ein symbolic-link
-O file Datei vorhanden und Eigentümer ist die effective user id
-G file Datei vorhanden und Eigentümer ist die effective group id
-S file Datei vorhanden und ist ein special file vom Type socket
-t [filedes] Datei offen und beschreibt der File-Descriptor ein Terminal
(Default ist Descriptor 1 ). filedes darf nicht weggelassen
werden, wenn [[ ... ]] verwendet wird
binary File Operatoren
file1 -nt file2 file ist neuer als file2
file1 -ot file2 file1 ist älter als file2
file1 -ef file2 file1 ist ein anderer Name für file2 (link)
[[ quota -ef /tmp/try ]] && ( print link ; ls -li quota /tmp/try )
unary Operatoren
-z s1 hat der String s1 die Länge 0 hat (Leerstring)
-n s1 ist die Länge des Strings grösser 0 .
-o option ist option gesetzt
Stringoperatoren (Verwendung in test [ .. ] und [[ ... ]]
s1 = s2 String s1 gleich String s2 ist
s1 != s2 String s1 ungleich String s2 ist
Stringoperatoren (Verwendung nur in [[ ... ]] möglich )
s1 = pattern String s1 gleich pattern
s1 != pattern String s1 ungleich pattern
s1 < s2 String s1 kleiner als s2 (in ASCII -Sequenz)
s1 > s2 String s1 größer als s2 (in ASCII -Sequenz)
Numerische Operatoren
n1 -eq n2 Für den Vergleich von numerischen Werten sollten immer die
n1 -ge n2 entsprechenden Options verwendet werden und nicht
n1 -gt n2 < <= = != >= >
n1 -le n2 da führende Nullen das Ergebnis verfälschen könnten.
n1 -lt n2
n1 -ne n2