Der Befehl test dient zum Überprüfen von Dateitypen bzw. Vorhandensein von Dateien und zum Vergleichen von Werten. Der Aufruf erfolgt mit test Vergleich
wobei Vergleich die Prüfung bzw. den Vergleich enthält. Als Ergebnis gibt test 0 für Wahr (true) und 1 für Falsch (false) zurück. Der Rückgabewert wird mit Hilfe der Shelleigenen Variablen $? ermittelt. Es gibt Vergleiche für Dateien, Zeichenketten und Integer-Zahlen.
Anstatt des Befehls test
kann die Bedingung auch in eckige Klammern gesetzt werden. Hierbei ist darauf zu achten, dass zwischen den Klammern und dem Vergleich jeweils ein ein Leerzeichen steht: [ Vergleich ]
Dateitests:
-b Datei | Die Datei existiert und ist ein blockorientiertes Gerät |
-c Datei | Die Datei existiert und ist ein zeichenorientiertes Gerät |
-d Datei | Die Datei existiert und ist ein Verzeichnis |
-f Datei | Die Datei existiert und ist eine reguläre Datei |
-g Datei | Die Datei existiert und das Gruppen-ID-Bit ist gesetzt |
-h Datei | Die Datei existiert und ist ein symbolischer Link |
-k Datei | Die Datei existiert und das Sticky-Bit ist gesetzt |
-p Datei | Die Datei existiert und ist eine Named Pipe |
-r Datei | Die Datei existiert und ist lesbar |
-s Datei | Die Datei existiert und ist nicht leer |
-t [n] | Der offene Dateideskriptor n gehört zu einem Terminal; Vorgabe für n ist 1. |
-u Datei | Die Datei existiert und das Setuid-Bit ist gesetzt |
-w | Datei Die Datei existiert und ist beschreibbar |
-x | Datei Die Datei existiert und ist ausführbar |
Zeichenfolgen:
-n s1 | Die Länge der Zeichenfolge s1 ist ungleich Null |
-z s1 | Die Länge der Zeichenfolge s1 ist gleich Null |
s1 == s2 | Die Zeichenfolgen s1 und s2 sind identisch |
s1 != s2 | Die Zeichenfolgen s1 und s2 sind nicht identisch |
Zeichenfolge | Die Zeichenfolge ist nicht Null |
Ganzzahlvergleiche:
n1 -eq n2 | n1 ist gleich n2 |
n1 -ge n2 | n1 ist größer oder gleich n2 |
n1 -gt n2 | n1 ist größer als n2 |
n1 -le n2 | n1 ist kleiner oder gleich n2 |
n1 -lt n2 | n1 ist kleiner n2 |
n1 -ne n2 | n1 ist ungleich n2 |
Kombinierte Formen:
(Bedingung) | Wahr, wenn die Bedingung zutrifft (wird für die Gruppierung verwendet). Den Klammern muss ein \ vorangestellt werden. |
! Bedingung i | Wahr, wenn die Bedingung nicht zutrifft (NOT). |
Bedingung1 -a Bedingung2 | Wahr, wenn beide Bedingungen zutreffen (AND). |
Bedingung1 -o Bedingung2 | Wahr, wenn eine der beiden Bedingungen zutrifft (OR). |
Einzelne Befehle in Abhängigkeit von Bedingungen:
&& | wird ausgeführt, wenn Bedingung wahr ist |
|| | wird ausgeführt, wenn Bedingung nicht wahr ist |
Beispiel: [ Bedingung ] && echo Bedingung ist wahr || echo Beindung ist nicht wahr