Test (Unix)
Andere Namen | [ |
---|---|
Entwickler (en) | Verschiedene Open Source und kommerziell Entwickler |
Geschrieben in | C |
Betriebssystem | Unix, Unix-artig, Plan 9, Ibm i |
Plattform | Plattformübergreifend |
Typ | Befehl |
Lizenz | CoreUtils: GPLV3+ Plan 9: MIT -Lizenz |
Prüfung ist ein Befehlszeile Dienstprogramm gefunden in Unix, Plan 9, und Unix-artig Betriebssysteme, die bewertet werden bedingte Ausdrücke. Prüfung wurde 1981 in ein gebaues Kommando mit Shell gebaut UNIX -System III und gleichzeitig unter dem alternativen Namen zur Verfügung gestellt [.[1]
Überblick
Das Prüfung
Der Befehl in Unix bewertet die Ausdruck
Parameter. In den letzten Shell -Implementierungen ist es a Muschel gebautobwohl die externe Version immer noch existiert. In der zweiten Form des Befehls die [ ]
(Klammern) müssen von leeren Räumen umgeben sein (das liegt daran, dass [
ist ein Programm und Posix Kompatible Shells erfordern einen Platz zwischen dem Programmnamen und seinen Argumenten). Man muss explizit auf Dateinamen in der testen C Shell. Substitution für Dateiname (Kugeln) lässt das Shell -Skript beenden.
Das Prüfung
Befehl ist nicht zu verwechseln mit dem [[
Reserviertes Wort, das mit KSH88 eingeführt wurde. Letzteres ist kein Befehl, sondern ein Teil der KSH88-Syntax und wendet keine Substitution von Dateinamen auf Glob-Ausdrücke an.
Die Version von Prüfung
gebündelt GNU CoreUtils wurde von Kevin Braunsdorf und Matthew Bradburn geschrieben.[2] Der Befehl ist als separates Paket für verfügbar Microsoft Windows Im Rahmen des Unxutils Sammlung von einheimisch Win32 Häfen von gemeinsamen GNU-Unix-ähnlichen Versorgungsunternehmen.[3] Das Prüfung Der Befehl wurde auch auf die portiert Ibm i Betriebssystem.[4]
Syntax
Prüfung Ausdruck
oder
[ Ausdruck ]
Argumente
Die folgenden Argumente werden verwendet, um diesen Parameter zu konstruieren:
-e Dateiname - Dateiname existiert
Alle verbleibenden Argumente geben true zurück, wenn das Objekt (Datei oder Zeichenfolge) vorhanden ist und die angegebene Bedingung wahr ist.
-b Dateiname - Gibt einen echten Exit -Wert zurück, wenn der angegebene Dateiname vorliegt und eine Blockspezialfile ist-c Dateiname - Dateiname ist a Zeichenspezialendatei -d Dateiname - Dateiname ist a Verzeichnis -f Dateiname - Dateiname ist eine reguläre Datei-g Dateiname - Dateiname -Set Gruppen-ID Bit ist eingestellt-h Dateiname - Dateiname ist a symbolischer Link -k Dateiname - Dateiname's Sticky Bit ist eingestellt-L Dateiname - Dateiname ist a symbolischer Link -p Dateiname - Dateiname ist a benannte Pfeife (FIFO)-r Dateiname - Dateiname ist durch den aktuellen Prozess lesbar-s Dateiname - Dateiname hat eine Größe von mehr als 0-t FETHESSCRIPTOR - FEMPERSCRIPTOR ist offen und mit a verbunden Terminal -U Dateiname - Dateiname -Set Benutzeridentifikation Bit ist eingestellt
-W Dateiname - Die Schreibflagge des Dateinamens ist eingeschaltet. Der Dateiname ist jedoch nicht in einem schreibgeschützten Dateisystem beschreibt, selbst wenn der Test true angibt
-x Dateiname - Dateiname's ausführen Flag ist eingeschaltet, wenn die angegebene Datei vorhanden ist und ein Verzeichnis ist, dieWAHR
Der Beendenwert gibt an, dass der aktuelle Prozess die Erlaubnis zur Änderung hatCD
in das Verzeichnis.
Nicht -Standard Korn Shell Erweiterungen:
Datei1 -nt Datei2 - Datei1 ist neuer als Datei2 Datei11 -ot Datei2 - Datei1 ist älter als Datei2 Datei11 -ef Datei2 - Datei1 ist ein anderer Name für Datei2 - ((symbolischer Link oder harte Verbindung))
String -Argumente
Im PerlDiese Abschnitte sind umgekehrt: Gl
ist ein String -Operator und ==
ist ein numerischer Operator und so weiter für die anderen.
-n String1 - Die Länge der String1 -Variable ist ungleich Null-Z STRING1 - Die Länge der String1 -Variablen beträgt 0 (Null) String1 = String2 - String1- und String2 -Variablen sind identische String1 ! = String2 - String1- und String2 -Variablen sind nicht identisch string1 - true, wenn String1 -Variable keine Null -Zeichenfolge ist
Zahlenargumente
Ganzzahl1 -eq Integer2 - Integer1- und Integer2 -Variablen sind algebraisch gleich-ne - nicht gleich-Gt - größer als-ge - größer oder gleich-lt - weniger als-le - weniger oder gleich
Betreiber
Prüfung
Argumente können mit den folgenden Operatoren kombiniert werden:
! - Unarm Negation Operator-a - Binär- und Bediener-Ö - Binärer oder Operator (die-a
Der Bediener hat höhere Vorrang als die-Ö
Operator)\(Ausdruck\) - Klammern für die Gruppierung müssen mit einem Backslash entkommen werden\
Das -a
und -Ö
Die Betreiber sind zusammen mit Klammern für die Gruppierung XSI -Erweiterungen[5] und sind daher nicht tragbar. In tragbaren Shell -Skripten kann der gleiche Effekt erreicht werden, indem mehrere Aufrufe von hergestellt werden Prüfung
zusammen mit dem &&
und ||
Operatoren und Klammern.
Status beenden
Dieser Befehl gibt die folgenden Exit -Werte zurück:
0 - Der Expressionsparameter ist wahr1 - Der Expressionsparameter ist falsch oder fehlt> 1 - Ein Fehler ist aufgetreten
Beispiele
1. Um zu testen, ob eine Datei nicht vorhanden oder leer ist, geben Sie ein:
wenn Prüfung! -s "$ 1" dann Echo $ 1 existiert nicht oder ist leer. fi
Wenn die durch den erste Positionsparameter für die Shell -Prozedur angegebene Datei 1 $ 1 nicht vorhanden ist oder die Größe 0 hat, zeigt der Testbefehl die Nachricht an. Wenn $ 1 existiert und eine Größe von mehr als 0 hat, zeigt der Testbefehl nichts an.
Hinweis: Es muss einen Speicherplatz zwischen der Funktion -S und dem Dateinamen geben.
Die Anführungszeichen markieren rund 1 US -Dollar, stellen sicher, dass der Test auch dann ordnungsgemäß funktioniert, wenn der Wert von 1 $ eine Null -Zeichenfolge ist. Wenn die Anführungszeichen weggelassen werden und $ 1 der leere Zeichenfolge ist, zeigt der Testbefehl die Fehlermeldung an:
Test: Argument erwartet.
2. Typ, um einen komplexen Vergleich durchzuführen: Typ:
wenn [ "$#" -lt 2 ] ||! [ -e "$ 1" ] dann Ausfahrt fi
Wenn die Shell -Prozedur weniger als zwei Positionsparameter angegeben ist oder die von $ 1 angegebene Datei nicht vorhanden ist, gibt es die Shell -Prozedur aus. Die spezielle Shell -Variable $# repräsentiert die Anzahl der in der Befehlszeile eingegebenen Positionsparameter, die diese Shell -Prozedur startet.
Siehe auch
Verweise
- ^ http://www.in-ulm.de/~macheck/bourne/#system3 Bourne Shell ändert sich mit System III
- ^ Test (1) - Coreutils - Debian Buster - Debian Manpages
- ^ "Native Win32 -Ports einiger GNU -Dienstprogramme". Unxutils.SourceForge.net.
- ^ IBM. "IBM System I Version 7.2 Programmierung Qshell" (PDF). Abgerufen 2020-09-05.
{{}}
: CS1 Wartung: URL-Status (Link) - ^ IEEE STD 1003.1, 2004, Dokumentation für
Prüfung
Weitere Lektüre
- Robbins, Arnold; Nelson H. F. Beebe (2005). "6.2.4 Der Testbefehl". Classic Shell Scripting: Hidden -Befehle, die die Kraft von Unix freischalten. O'Reilly Media, Inc. S. 120–128. ISBN 978-0-596-55526-9.
- Ian Shields (20. Februar 2007). "Linux -Tipp: Bash -Test- und Vergleichsfunktionen". IBM Developerworks.
- William Shotts (2013). "27 - Durchflussregelung: Verzweigungen mit if". Die Linux -Befehlszeile. Keine Stärkepresse. S. 381–390. ISBN 978-1-59327-389-7. (Kostenfreier Download)
Externe Links
- Die einzelne Unix -Spezifikation, Version 4 von Die offene Gruppe - Shell and Utilities Referenz,
- Linux Benutzerbefehle Handbuch - -
- Plan 9 Programmierhandbuch, Volume 1 - -