Test (Unix)

Prüfung
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, die WAHR Der Beendenwert gibt an, dass der aktuelle Prozess die Erlaubnis zur Änderung hat CD 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

  1. ^ http://www.in-ulm.de/~macheck/bourne/#system3 Bourne Shell ändert sich mit System III
  2. ^ Test (1) - Coreutils - Debian Buster - Debian Manpages
  3. ^ "Native Win32 -Ports einiger GNU -Dienstprogramme". Unxutils.SourceForge.net.
  4. ^ IBM. "IBM System I Version 7.2 Programmierung Qshell" (PDF). Abgerufen 2020-09-05.{{}}: CS1 Wartung: URL-Status (Link)
  5. ^ IEEE STD 1003.1, 2004, Dokumentation für Prüfung

Weitere Lektüre

Externe Links