Der Befehl test kann in der Linux-Befehlszeile verwendet werden, um ein Element mit einem anderen zu vergleichen. In BASH-Shell-Skripts wird er jedoch häufiger als Teil bedingter Anweisungen verwendet, die die Logik und den Programmfluss steuern.
Ein grundlegendes Beispiel
Sie können diese Befehle einfach durch Öffnen eines Terminalfensters ausprobieren.
test 1 -eq 2 && echo "ja" || Echo "Nein"
Der obige Befehl lässt sich wie folgt aufteilen: Im Wesentlichen vergleicht der Befehl 1 zu 2, und wenn sie übereinstimmen, wird die Echo-Anweisung "yes" ausgeführt, die "yes" anzeigt. Wenn sie nicht übereinstimmen, wird die Echo-Anweisung "no" ausgeführt, die "no" anzeigt. Wenn Sie Elemente vergleichen, die als Zahlen analysiert werden, können Sie die folgenden Vergleichsoperatoren verwenden: Beispiele test 1 -eq 2 && echo "ja" || Echo "Nein"
(zeigt "no" auf dem Bildschirm an, da 1 nicht gleich 2 ist) test 1 -ge 2 && echo "ja" || Echo "Nein"
(zeigt "no" auf dem Bildschirm an, da 1 nicht größer oder gleich 2 ist) test 1 -gt 2 && echo "ja" || Echo "Nein"
(zeigt "no" auf dem Bildschirm an, da 1 nicht größer als 2 ist) test 1 - le 2 && echo "ja" || Echo "Nein"
(zeigt "Ja" an, da 1 kleiner oder gleich 2 ist) test 1 - lt 2 && echo "ja" || Echo "Nein"
(zeigt "Ja" an, da 1 kleiner oder gleich 2 ist) Test 1 -ne 2 && Echo "Ja" || Echo "Nein"
(zeigt "Ja" an, da 1 nicht gleich 2 ist) Wenn Sie Elemente vergleichen, die als Zeichenfolgen analysiert werden, können Sie die folgenden Vergleichsoperatoren verwenden: Beispiele test "string1" = "string2" && echo "yes" || Echo "Nein"
(zeigt "no" auf dem Bildschirm an, da "string1" nicht gleich "string2" ist) test "string1"! = "string2" && echo "yes" || Echo "Nein"
(zeigt "Ja" an, da "string1" nicht "string2" ist) test -n "string1" && echo "yes" || Echo "Nein"
(zeigt "Ja" auf dem Bildschirm an, da "Zeichenfolge1" eine Zeichenfolgenlänge größer als Null hat) test -z "string1" && echo "yes" || Echo "Nein"
(zeigt "no" auf dem Bildschirm an, da "string1" eine Stringlänge hat, die größer als Null ist.) Wenn Sie Dateien vergleichen, können Sie die folgenden Vergleichsoperatoren verwenden: Beispiele test / pfad / zu / datei1 -nt / pfad / zu / datei2 && echo "ja"
(Wenn file1 neuer als file2 ist, wird das Wort "yes" angezeigt.) test -e / pfad / zu / datei1 && echo "ja"
(Wenn file1 existiert, wird das Wort "yes" angezeigt.) test -O / pfad / zu / datei1 && echo "ja"
(Wenn Sie file1 besitzen, wird das Wort "yes" angezeigt ") Terminologie Bisher hat alles eine Sache mit der anderen verglichen, aber was ist, wenn Sie zwei Bedingungen vergleichen möchten? Wenn zum Beispiel ein Tier 4 Beine hat und "moo" geht, ist es wahrscheinlich eine Kuh. Wenn Sie nur nach 4 Beinen suchen, kann dies nicht garantieren, dass Sie eine Kuh haben. Um beide Bedingungen gleichzeitig zu testen, verwenden Sie die folgende Anweisung: test 4 -eq 4 -a "moo" = "moo" && echo "es ist eine Kuh" || Echo "Es ist keine Kuh"
Der Schlüssel ist hier das -a, das für steht und . Es gibt eine bessere und häufig verwendete Methode, um denselben Test durchzuführen, und zwar folgendermaßen: test 4 -eq 4 && test "moo" = "moo" && echo "es ist eine kuh" || Echo "Es ist keine Kuh"
Ein weiterer Test, den Sie möglicherweise durchführen möchten, besteht darin, zwei Anweisungen zu vergleichen. Wenn beide zutreffen, geben Sie einen String aus. Wenn Sie beispielsweise prüfen möchten, ob eine Datei mit dem Namen "file1.txt" oder eine Datei mit dem Namen "file1.doc" vorhanden ist, können Sie den folgenden Befehl verwenden: test -e datei1.txt -o -e datei1.doc && echo "datei1 existiert" || Echo "Datei1 existiert nicht"
Der Schlüssel ist hier das -o, das für steht oder . Es gibt eine bessere und häufig verwendete Methode, um denselben Test durchzuführen, und zwar folgendermaßen: test -e datei1.txt || test -e datei1.doc && echo "datei1 existiert" || Echo "Datei1 existiert nicht" Sie müssen nicht den Worttest verwenden, um den Vergleich durchzuführen. Alles, was Sie tun müssen, ist, die Anweisung wie folgt in eckige Klammern zu setzen: -e Datei1.txt && Echo "Datei1 existiert" || Echo "Datei1 existiert nicht"
Das und bedeutet im Grunde dasselbe wie test. Jetzt wissen Sie, dass Sie den Vergleich mehrerer Bedingungen wie folgt verbessern können: 4 -eq 4 && "moo" = "moo" && echo "es ist eine Kuh" || Echo "Es ist keine Kuh"-e Datei1.txt || -e Datei1.doc && Echo "Datei1 existiert" || Echo "Datei1 existiert nicht" Der Befehl test ist in Skripten nützlicher, da Sie den Wert einer Variablen gegen eine andere testen und den Programmablauf steuern können. In der Standardbefehlszeile können Sie damit testen, ob eine Datei vorhanden ist oder nicht.
Zahlen vergleichen
Text vergleichen
Dateien vergleichen
Mehrere Bedingungen vergleichen
Das Schlüsselwort "Test" entfernen
Zusammenfassung