Zum Inhalt springen

Test/TMP

Aus Foxwiki

TMP

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 auch 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, beispielsweise

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 ]
Operationen
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
-e Datei Datei existiert
-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] DATEI-Descriptor FD (Standard: Standardausgabe) ist auf Tty offen
-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
Datei1 -nt Datei2 Datei1 ist neuer als Datei2
Datei1 -ot Datei2 Datei1 ist älter als Datei2
Datei1 -ef Datei2 Beide Dateien belegen dieselbe Inode auf demselben Gerät
Beispiel

Wenn ein Verzeichnis RCS existiert

if [ -d RCS ] Wenn ein Verzeichnis RCS existiert
Bedingungen für 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
Beispiel

Wenn dieAntwort nicht "j" ist

if [ "$Antwort" != "j" ]
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
Beispiele
while test# -gt 0 Solange Argumente vorliegen
while [ -n "$1" ] Solange das erste Argument nicht leer ist
if [count -lt 10 ] Wenncount kleiner 10
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)
Beispiel

Wenn das erste Argument keine lesbare oder reguläre Datei ist

if [ ! -r "$1" -o ! -f "$1" ]