Unter Unix-ähnlichen Betriebssystemen überprüft der Befehl test die Dateitypen und vergleicht die Werte.
Dieses Dokument behandelt die GNU / Linux-Testversion.
Beschreibung
test wird als Teil der bedingten Ausführung von Shell-Befehlen verwendet.
Der Test wird mit dem durch EXPRESSION festgelegten Status beendet. Das Platzieren des EXPRESSION zwischen eckigen Klammern ([und]) entspricht dem Testen des EXPRESSION mit test. Um den Beendigungsstatus an der Eingabeaufforderung anzuzeigen, geben Sie den Wert "$?" Ein Wert von 0 bedeutet, dass der Ausdruck als wahr bewertet wird, und ein Wert von 1 bedeutet, dass der Ausdruck als falsch bewertet wird.
Syntax
Test EXPRESSION
[ AUSDRUCK ]
Ausdrücke
Ausdrücke haben folgende Formen:
( AUSDRUCK ) | Ausdruck ist wahr |
! AUSDRUCK | AUSDRUCK ist falsch |
AUSDRUCK1 -a AUSDRUCK2 | Sowohl EXPRESSION1 als auch EXPRESSION2 sind wahr |
AUSDRUCK1 -o AUSDRUCK2 | entweder EXPRESSION1 oder EXPRESSION2 ist wahr |
-n STRING | Die Länge von STRING ist ungleich Null |
STRING | äquivalent zu -n STRING |
-z STRING | Die Länge von STRING ist Null |
STRING1 = STRING2 | Die Saiten sind gleich |
STRING1! = STRING2 | Die Zeichenfolgen sind nicht gleich |
INTEGER1 -eq INTEGER2 | INTEGER1 ist gleich INTEGER2 |
INTEGER1 -ge INTEGER2 | INTEGER1 ist größer oder gleich INTEGER2 |
INTEGER1 -gt INTEGER2 | INTEGER1 ist größer als INTEGER2 |
INTEGER1 -le INTEGER2 | INTEGER1 ist kleiner oder gleich INTEGER2 |
INTEGER1 -lt INTEGER2 | INTEGER1 ist kleiner als INTEGER2 |
INTEGER1 -ne INTEGER2 | INTEGER1 ist nicht gleich INTEGER2 |
DATEI1 -ef DATEI2 | FILE1 und FILE2 haben die gleichen Geräte- und Inode-Nummern |
DATEI1 -nt DATEI2 | DATEI1 ist neuer (Änderungsdatum) als DATEI2 |
DATEI1 - nicht DATEI2 | DATEI1 ist älter als DATEI2 |
-b DATEI | DATEI existiert und ist Block Spezial |
-c DATEI | DATEI existiert und ist charakterspezifisch |
-d DATEI | DATEI existiert und ist ein Verzeichnis |
-E-Datei | Datei existiert |
-f DATEI | DATEI existiert und ist eine reguläre Datei |
-g DATEI | DATEI existiert und ist Set-Group-ID |
-G DATEI | DATEI existiert und gehört der effektiven Gruppen-ID |
-h DATEI | DATEI existiert und ist eine symbolische Verknüpfung (wie -L) |
-k DATEI | DATEI existiert und hat sein Sticky-Bit gesetzt |
-L DATEI | DATEI existiert und ist eine symbolische Verknüpfung (wie -h) |
-O DATEI | DATEI existiert und gehört der effektiven Benutzer-ID |
-p DATEI | DATEI existiert und ist eine Named Pipe |
-r DATEI | DATEI existiert und Leseberechtigung wird erteilt |
-s DATEI | DATEI existiert und hat eine Größe größer als Null |
-S DATEI | DATEI existiert und ist ein Socket |
-t FD | Der Dateideskriptor FD wird auf einem Terminal geöffnet |
-u DATEI | FILE existiert und sein Set-User-ID-Bit ist gesetzt |
-w DATEI | DATEI existiert und Schreibberechtigung wird erteilt |
-x DATEI | DATEI existiert und die Berechtigung zum Ausführen (oder Suchen) wird erteilt |
Mit Ausnahme von -h und -L dereferenzieren alle DATEI-bezogenen Tests symbolische Links. Beachten Sie, dass für Muscheln Klammern (z. B. durch umgekehrte Schrägstriche) maskiert werden müssen. INTEGER kann auch -l STRING sein, was die Länge von STRING ergibt.
HINWEIS: Ihre Shell verfügt möglicherweise über eine eigene Testversion, die normalerweise die hier beschriebene Version ersetzt. Weitere Informationen zu den unterstützten Optionen finden Sie in der Dokumentation Ihrer Shell.
Beispiele
test 100 -gt 99 && echo "Ja, das stimmt." || Echo "Nein, das ist falsch."
Dieser Befehl gibt den Text "Ja, das stimmt" aus. weil 100 größer als 99 ist.
Test 100 -lt 99 && Echo "Ja." || Echo "Nein."
Dieser Befehl gibt den Text "Nein" aus. weil 100 nicht weniger als 99 ist.
["awesome" = "awesome"]; echo $?
Dieser Befehl gibt "0" aus, da der Ausdruck wahr ist. Die beiden Zeichenfolgen sind identisch.
[5-Gleichung 6]; echo $?
Dieser Befehl gibt "1" aus, da der Ausdruck falsch ist. 5 ist nicht gleich 6.