Bash if –e und –s und andere Dateitestoperatoren

In Linux-Dateien werden Testoperatoren verwendet, um die mit einer Datei verknüpften Attribute zu überprüfen, z. B. den Autor der Datei, Administratorrechte und Eigentümer der Datei, und um zu prüfen, ob es sich um einen Symlink handelt oder nicht. Wenn es sich um Dateien handelt, ist es notwendig, zu diesem Zweck zu prüfen, ob sie vorhanden sind und ob sie Inhalte enthalten oder nicht. oder wenn eine Anweisung zusammen mit den Testoperatoren verwendet wird.

Wie der Name schon sagt, werden Dateitestoperatoren in der Bash auch zum Testen der Dateien verwendet. Mit Hilfe dieser Operatoren können wir verschiedene Aspekte einer Datei testen, beispielsweise ob diese Datei beschreibbar oder nur lesbar ist. Es gibt viele Dateitestoperatoren und jeder hat eine andere Rolle und Verwendung. Dateitestoperatoren helfen uns, Fehler bei der Skripterstellung in Bash zu vermeiden. Um diese Aufgabe auszuführen, verwenden wir eine if-else-Anweisung. Die if-else-Anweisung fungiert als sehr nützliches Werkzeug zur Fehlerbehandlung bei der Bash-Skripterstellung.

Der Zweck des „-e“-Operators besteht darin, uns mitzuteilen, ob eine Datei im angegebenen Verzeichnis vorhanden ist oder nicht. Der „-s“-Operator teilt uns mit, dass die Datei keine Größe von Null hat, was bedeutet, dass dieser Operator uns mitteilt, ob die Datei im angegebenen Verzeichnis Daten enthält oder nicht. Andere Operatoren sind an den Umgang mit Dateien gewöhnt, aber „-e“ und „-s“ sind die wichtigsten und werden häufig verwendet.

So verwenden Sie Testoperatoren:

In dieser Abbildung werden wir versuchen, alle Testoperatoren zu verwenden, um verschiedene Aufgaben an den Dateien auszuführen.

Beispiel Nr. 1: Verwendung des Textoperators if –e

In diesem Beispiel werden wir versuchen, den Testoperator if –e zu verwenden, der hauptsächlich zur Überprüfung verwendet wird, ob die Datei in einem Verzeichnis vorhanden ist oder nicht. Nun erstellen wir zunächst eine neue Datei.

linux@linux-Virtualbox:~$ nano testoperator.sh

Wenn wir den obigen Befehl ausführen, wird die leere Datei geöffnet. Jetzt schreiben wir den Code, in dem wir eine Bedingung erstellen, dass die Datei „employee.txt“ vorhanden ist. Daraufhin wird der Echo-Befehl angezeigt, der die Meldung „Datei existiert“ enthält. Andernfalls wird die Meldung „Datei existiert nicht“ ausgeführt. Die Datei testoperator enthält den unten genannten Inhalt.

#!/bin/sh
file=“mitarbeiter.txt“
Wenn [ -e $file ]

Dann
echo „Datei existiert“
anders
echo „Die Datei existiert nicht“
fi

Nachdem wir die Datei mit dem Bash-Befehl gespeichert haben, führen wir den unten genannten Befehl aus, der die Datei testoperator.sh ausführt.

linux@linux-Virtualbox:~$ bash testoperator.sh

Wenn wir den obigen Befehl ausführen, liest er den Code der Testoperator-Datei, die ausgeführt wird, und sucht nach der Datei im Home-Verzeichnis. In diesem Fall haben wir keine Datei im Verzeichnis, daher wurde die folgende Ausgabe ausgeführt.

Ausgabe:

Die Datei existiert nicht

Nun erstellen wir zunächst eine neue Datei mit dem Namen „employee.txt“. Führen Sie dann den Befehl erneut aus, um zu prüfen, ob die Datei erkannt wird oder nicht. Wie unten gezeigt, befindet sich die Datei dieses Mal im Home-Verzeichnis.

Lassen Sie uns nun den obigen Befehl erneut ausführen. Dieses Mal wird die unten gezeigte Ausgabe angezeigt, in der die Meldung „Datei existiert“ angezeigt wird.

Ausgabe:

Datei existiert

Beispiel Nr. 2: Verwendung des Textoperators if –d

In diesem Beispiel werden wir einen anderen Testoperator ausprobieren, nämlich den „-d“-Operator, der verwendet wird, um zu überprüfen, ob die von uns überprüfte Datei ein Verzeichnis ist oder nicht. Dieses Mal erstellen wir ein neues Verzeichnis mit dem Namen „employee“, wie im folgenden Snippet zu sehen ist.

Jetzt ändern wir die Datei „testoperator.sh“, indem wir den Dateinamen „employee.txt“ in „employee“ ändern. Übergeben Sie dann den „-d“-Operator in der if-Anweisung zusammen mit der „$file“, die abgerufen wird. Und indem wir die Meldung ändern, die als Ausgabe angezeigt wird, speichern wir die Datei. Die Datei „testoperator.sh“ enthält nun den folgenden Inhalt.

#!/bin/sh
file=“Mitarbeiter“
Wenn [ -d $file ]

Dann
echo „Der Mitarbeiter ist ein Verzeichnis“
anders
echo „Der Mitarbeiter ist kein Verzeichnis“
fi

Nachdem wir „testoperator.sh“ geändert haben, führen wir den Bash-Befehl zusammen mit dem Dateinamen aus:

linux@linux-Virtualbox:~$ bash testoperator.sh

Wenn der obige Befehl ausgeführt wird, wird die unten gezeigte Ausgabe angezeigt, in der die folgende Meldung gedruckt wird:

Ausgabe:

Der Mitarbeiter ist ein Verzeichnis

Beispiel Nr. 3: Verwendung des Textoperators if –s

In diesem Beispiel werden wir versuchen, den Operator „-s“ zu verwenden, mit dem überprüft wird, ob die Datei Inhalte enthält oder nicht. Dazu verwenden wir die bereits erstellte Datei namens „employee.txt“, die wir in Beispiel 1 verwendet haben. Ändern wir zunächst die Datei testoperator.sh, indem wir die Option „-s“ zusammen mit dem Dateinamen an unsere if-Anweisung übergeben und die Datei „employee.txt“ zuweisen. Außerdem wird dadurch die Meldung geändert, die als Ausgabe angezeigt wird.

#!/bin/sh
file=“mitarbeiter.txt“
Wenn [ -d $file ]

Dann
echo „employee.txt ist leer“
anders
echo „mitarbeiter.txt ist nicht leer“
fi

Jetzt speichern und schließen wir die Datei „testoperator.sh“ und führen den unten genannten Befehl im Terminal aus.

linux@linux-Virtualbox:~$ bash testoperator.sh

Wenn der obige Befehl ausgeführt wird, wird die else-Anweisung ausgeführt, da die Datei „employee.txt“ den Inhalt enthält. Daher wird der echo-Befehl der then-Anweisung ignoriert.

Ausgabe:

Employee.txt ist nicht leer

Jetzt entfernen wir den Inhalt aus der Datei „employee.txt“ und führen den Befehl dann erneut aus. Wenn der obige Befehl erneut ausgeführt wird, wird die Meldung „Then-Anweisungen“ angezeigt, da sie keinen Inhalt enthält. Das folgende Beispiel ist die Ausgabe des Befehls, den wir nach dem Löschen des Dateiinhalts ausgeführt haben.

Ausgabe:

mitarbeiter.txt ist leer

Beispiel Nr. 4: Verwendung des Textoperators if –r

In diesem Beispiel implementieren wir einen weiteren Testoperator, nämlich „-r“. Mit diesem Operator wird überprüft, ob die Datei für den Benutzer lesbar ist oder nicht. Dazu ändern wir die Datei testoperator.txt, indem wir den Operator „-d“ durch „-r“ ersetzen. Dadurch wird auch die Ausgabemeldung geändert, die angibt, ob die Datei lesbar ist. Es wird die Meldung „employee.txt ist lesbar“ angezeigt. Wenn die Datei nicht lesbar ist, wird die else-Anweisung angezeigt. Die „testoperator.txt“ enthält nun folgenden Inhalt:

#!/bin/sh
file=“employee.txt“
Wenn [ -r $file ]

Dann
echo „employee.txt ist lesbar“
anders
echo „mitarbeiter.txt ist lesbar“
fi

Jetzt führen wir den folgenden Befehl aus, um den darin geschriebenen Code auszuführen.

linux@linux-Virtualbox:~$ bash testoperator.sh

Nachdem Sie den obigen Befehl ausgeführt haben, wird die unten angezeigte Ausgabe auf dem Terminal gedruckt.

Ausgabe:

Employee.txt ist lesbar

Abschluss

Wir haben den wichtigsten Teil des Ablagesystems besprochen, die Testoperatoren. Bei der Arbeit mit Dateien sind die Testoperatoren das wichtigste Dienstprogramm, das von Linux-Paketen bereitgestellt wird. Nachdem wir den Zweck der Testoperatoren vorgestellt hatten, erklärten wir sie, indem wir diese Operatoren in verschiedenen Beispielen implementierten.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen