Wenn Sie an einem Bash-Skript arbeiten, das mit Dateien und Verzeichnissen interagiert, kann es vorkommen, dass Sie sicherstellen müssen, dass die Datei oder das Verzeichnis vorhanden ist. Dies hilft, mögliche Fehler beim Ausführen bestimmter Aktionen für eine nicht vorhandene Datei zu vermeiden.
In diesem Tutorial zeige ich Ihnen einige Möglichkeiten, um zu überprüfen, ob eine Datei oder ein Verzeichnis im Bash-Skript vorhanden ist oder nicht. Beginnen wir zuerst mit der Datei.
Überprüfen Sie, ob die Datei im Bash-Skript existiert
Die Idee hier ist, den Operator -f zu verwenden, der nur wahr zurückgibt, wenn es sich um eine normale Datei (nicht um ein Verzeichnis) handelt.
Angenommen, Sie möchten überprüfen, ob die Datei /home/user/my_file existiert oder nicht. So können Sie mit eckigen Klammern prüfen
#!/bin/bash
if [ -f /home/user/my_file ]
then
echo "My file exists"
fi
Aber Sie werden den Dateinamen nicht immer vorher bekommen, oder? Sie können es in einer Variablen haben und wenn das der Fall ist, können Sie es auf diese Weise verwenden.
#!/bin/bash
FILE=/home/user/my_file
if [ -f "$FILE" ]
then
echo "My file exists"
else
echo "My file doesn't exist"
fi
Grundsätzlich kommt es auf die Bedingung an, die Sie im if-Befehl verwenden. Es liegt an Ihnen, wie Sie die if-Anweisung verwenden möchten.
Sie können es zum Beispiel mit zwei eckigen Klammern schreiben, halten Sie „then“ in der gleichen Zeile wie „if“ mit Hilfe von Semikolon wie folgt:
#!/bin/bash
FILE=/home/user/my_file
if [ -f "$FILE" ]; then
echo "My file exists"
else
echo "My file doesn't exist"
fi
oder fügen Sie die gesamte Anweisung wie folgt zusammen:
[ -f /home/user/my_file ] && echo "My file exists" || echo "My file doesn't exist"
Überprüfen Sie, ob die Datei in Bash mit Test existiert
Sie können auch Test in Bash verwenden, um zu sehen, ob die Datei existiert oder nicht. Es ist ziemlich dasselbe, nur dass Sie die eckigen Klammern in der if-Anweisung nicht verwenden:
#!/bin/bash
FILE=/home/user/my_file
if test -f "$FILE"
then
echo "My file exists"
else
echo "My file doesn't exist"
fi
Sie können den obigen Code auch in einer einzelnen Zeile wie folgt verwenden:
test -f /home/user/my_file && echo "My file exists" || echo "My file doesn't exist"
Überprüfen Sie, ob die Datei im Bash-Skript nicht existiert
Was ist, wenn es umgekehrt ist und Sie überprüfen möchten, ob die Datei in Bash nicht existiert? Sie können so ziemlich den gleichen Code wie oben verwenden, indem Sie den Negationsoperator verwenden:
#!/bin/bash
FILE=/home/user/my_file
if [ ! -f "$FILE" ]
then
echo "My file doesn't exist"
fi
Nachdem Sie nun wissen, wie man mit Dateien umgeht, gehen wir zu den Verzeichnissen über.
Überprüfen Sie, ob das Verzeichnis im Bash-Skript existiert
Der Code zum Überprüfen des Verzeichnisses ist derselbe wie der, den Sie im vorherigen Abschnitt gesehen haben. Der einzige Unterschied besteht darin, dass Sie -d anstelle von -f verwenden. -d gibt nur für Verzeichnisse wahr zurück.
#!/bin/bash
if [ -d /home/user/my_dir ]
then
echo "My directory exists"
fi
Sie können den Test auch hier verwenden:
#!/bin/bash
DIR=/home/user/my_dir
if test -d "$DIR"
then
echo "My directory exists"
else
echo "My directory doesn't exist"
fi
Überprüfen Sie, ob das Verzeichnis in der Bash nicht existiert
Sie können die Negation erneut verwenden, um zu prüfen, ob das Verzeichnis nicht existiert:
#!/bin/bash
DIR=/home/user/my_dir
if [ ! -d "$DIR" ]
then
echo "My directory doesn't exist"
fi
Das ist es. Das ist alles, was Sie tun müssen, um zu überprüfen, ob ein Dateiverzeichnis in der Bash-Shell existiert oder nicht.
Ich hoffe, Sie finden diesen Bash-Tipp nützlich. Wenn Sie Fragen oder Anregungen haben, hinterlassen Sie bitte unten einen Kommentar.