|
Bedingungen testen
Das wichtigste Kommando ist 'test', mit dem man mannigfache Bedingungen testen
kann. test Argument Dieses Kommando prüft eine Bedingung und liefert 'true' (0), falls die Bedingung erfüllt ist und 'false' (1), falls die Bedingung nicht erfüllt ist. Der Fehlerwert 2 wird zurückgegeben, wenn das Argument syntaktisch falsch ist (meist durch Ersetzung hervorgerufen). Es lassen sich Dateien, Zeichenketten und Integer-Zahlen (16 Bit, bei Linux 32 Bit) überprüfen.
Das Argument von Test besteht aus einer Testoption und einem Operanden, der ein
Dateiname oder eine Shell-Variable (Inhalt: String oder Zahl) sein kann. In bestimmten
Fällen können auf der rechten Seite eines Vergleichs aus Strings oder
Zahlen stehen - bei der Ersetzung von leeren Variablen kann es aber zu Syntaxfehlern
kommen. Weiterhin lassen sich mehrere Argumente logisch verknüpfen (UND, ODER,
NICHT). Beispiel:
test -w /etc/passwd
mit der Kommandoverkettung lassen sich so schon logische Entscheidungen treffen, z. B.:
test -w /etc/passwd && echo "Du bist ROOT"
Normalerweise kann statt 'test' das Argument auch in eckigen Klammern gesetzt
werden. Die Klammern müssen von Leerzeichen umschlossen werden:
[ -w /etc/passwd ]
Die folgenden Operationen können bei 'test' bzw. [ ... ] verwendet werden.
Eigenschaften von Dateien
Ausdruck |
Bedeutung |
-e < datei > |
datei existiert |
-r < datei > |
datei existiert und Leserecht |
-w <datei> |
datei existiert und Schreibrecht |
-x <datei> |
datei existiert und Ausführungsrecht |
-f <datei> |
datei existiert und ist einfache Datei |
-d <datei> |
datei existiert und ist Verzeichnis |
-h <datei> |
datei existiert und ist symbolisches Link |
-c <datei> |
datei existiert und ist zeichenor. Gerät |
-b <datei> |
datei existiert und ist blockor. Gerät |
-p <datei> |
datei existiert und ist benannte Pipe |
-u <datei> |
datei existiert und für Eigentümer s-Bit gesetzt |
-g <datei> |
datei existiert und für Gruppe s-Bit gesetzt |
-k <datei> |
datei existiert und t- oder sticky-Bit gesetzt |
-s <datei> |
datei existiert und ist nicht leer |
-L <datei> |
datei ist symbolisches Link |
-t <dateikennzahl> |
dateikennzahl ist einem Terminal zugeordnet |
Vergleiche und logische Verknüpfungen
Vergleich von Zeichenketten |
Ausdruck |
Bedeutung |
-n <String> |
wahr, wenn String nicht leer |
-z <String> |
wahr, wenn String leer ist |
<String1> = <String2> |
wahr, wenn die Zeichenketten gleich sind |
<String1> != <String2> |
wahr, wenn Zeichenketten verschieden sind |
Algebraische Vergleiche ganzer Zahlen |
Operator |
Bedeutung |
-eq |
equal - gleich |
-ne |
not equal - ungleich |
-ge |
greater than or equal - größer gleich |
-gt |
greater than - größer |
-le |
less than or equal - kleiner gleich |
-lt |
less than - kleiner |
Logische Verknüpfung zweier Argumente |
UND |
<bedingung1> -a <bedingung2> |
ODER |
<bedingung1> -o <bedingung2> |
Klammern |
\( <ausdruck> \) |
Negation |
! <ausdruck> |
|
|
|