So überprüfen Sie, ob eine Datei oder ein Verzeichnis in einem Bash-Shell-Skript vorhanden ist

Prüfen, ob eine Datei oder ein Verzeichnis aus einem Bash-Skript existiert

Bash wird verwendet, um regelmäßig ausgeführte Befehle in Linux zu automatisieren. Befehle, die für Operationen an Dateien/Verzeichnissen gedacht sind, werden ziemlich häufig verwendet, und normalerweise müssen wir vor der Ausführung eines solchen Befehls überprüfen, ob die bestimmte Datei oder das jeweilige Verzeichnis existiert. Sehen wir uns an, wie Sie diese Überprüfung durchführen.

Syntax und Verwendung

Dateien

So prüfen Sie, ob eine Datei vorhanden ist, verwenden Sie die folgende Syntax:

[ -F  ]

Der Ausdruck [ -F ] gibt 0 zurück, d. h. Erfolg, wenn existiert, und wenn es nicht existiert, wird ein Status ungleich Null zurückgegeben. Normalerweise wird dies als Bedingung in der wenn Erklärung.

if [ -f ] dann fi

Um den zurückgegebenen Wert zu negieren, einfach vor dem -F mit einem Negationsoperator (!).

wenn [ ! -f ] dann fi

In diesem Fall ist die Bedingung erfüllt, wenn die Datei ist nicht vorhanden, da der zurückgegebene Nicht-Null-Status (false) negiert und als 0 (true) betrachtet wird.

Beachten Sie, dass der vollständige Pfad der Datei anstelle des Dateinamens angegeben werden sollte, wenn die zu überprüfende Datei nicht im aktuellen Verzeichnis und in einem anderen Verzeichnis vorhanden ist.

Verzeichnisse

Eine ähnliche Syntax wie zum Prüfen von Dateien wird zum Prüfen von Verzeichnissen verwendet.

[ -D  ]

Ähnlich der Anweisung für Dateien gibt diese Anweisung 0 zurück, d. h. Erfolg, wenn das Verzeichnis existiert, und ein Nicht-Null-Wert, d. h. ein Fehlerstatus wird zurückgegeben, wenn er nicht existiert. Dies wird auch häufig in einem wenn Aussagebedingung.

if [ -d ] dann fi

Um den zurückgegebenen Status zu negieren, stellen Sie das -D mit einem Negationsoperator (!).

wenn [ ! -d ] dann fi

Die Bedingung erfüllt (Status 0) in diesem Fall, wenn das Verzeichnis nicht existiert, und schlägt fehl (Status ungleich Null), wenn das Verzeichnis existiert.

Wie bereits bei Dateien erwähnt, muss, wenn das zu prüfende Verzeichnis an einem anderen Ort und nicht im aktuellen Verzeichnis existiert, der gesamte Verzeichnispfad anstelle des Verzeichnisnamens eingegeben werden.

💡 Die Klammersyntax ( [...] ) die hier verwendet wird, ist eigentlich ein Linux-Befehl namens Prüfung. Die Optionen -F und -D sind die Funktionen dieses Befehls. Weitere Informationen finden Sie auf der Handbuchseite von test ( Mann test ).

Aus einem Bash-Skript prüfen

In den obigen Beispielen haben wir die Syntaxen direkt am Terminal verwendet. Die Shell, wenn sie auf eine Schleife oder eine bedingte Anweisung stößt (wenn in unserem Fall), setzt es die Eingabeaufforderung fort und lässt den Benutzer den Block eingeben.

Dieselben Syntaxen können innerhalb eines Bash-Skripts verwendet werden.

Der #!/bin/bash at the start gibt den Interpreter an, der bei der Ausführung der Datei verwendet werden soll. Obwohl Bash heutzutage die am häufigsten verwendete Shell ist, bevorzugen einige Benutzer Shells wie zsh, die anstelle von bash am Anfang dieser Datei angegeben werden sollte.

Ausführungsberechtigungen erteilen Führen Sie für diese Datei Folgendes aus:

chmod +x test.sh

Endlich, die Datei ausführen, Lauf:

./test.sh