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.
Datei Operatoren
Dateioptionen Prüfung -e file Datei vorhanden -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 wirdExistiert Datei , wenn nicht farbige Fehlermeldung
line: code : existiert Datei
1: |
|
WennZielverzeichnis nicht existiert , dann anlegen
line: code : existiert Zielverzeichnis
1: |
|
Binary File Operatoren
Sie benötigen 2 Files als Operandenfile1 -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)
Ermittlung neuere Datei
line: code : Neuere Dateiversion ermitteln
1: |
|
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
Für den Vergleich von numerischen Werten sollten immer die
entsprechenden Options verwendet werden und
nicht < <= = != >= >
da führende Nullen das Ergebnis verfälschen könnten.
n1 -eq n2 expr1 gleich expr2
n1 -ge n2 expr1 größer/gleich expr2
n1 -gt n2 expr1 größer als expr2
n1 -le n2 expr1 kleiner/gleich expr2
n1 -lt n2 expr1 kleiner als expr2
n1 -ne n2 expr1 ungleich expr2
Ist der ausführende User root?
line: code : Ist User root ?
1:
uid=$(id -u) # uid ermitteln
if [ ${uid} -ne 0 ] ; then # ist nicht root ?
show "Hallo ${USER}, nur ROOT darf Backup starten"
exit
fi
1: |
|