Grundlagen des Test-Befehls verstehen
Der test
-Befehl in Linux ist ein wichtiges Werkzeug zur Auswertung von Bedingungen in Shell-Skripten. Er ermöglicht es Ihnen, Dateieigenschaften zu prüfen, Zeichenketten zu vergleichen, numerische Werte auszuwerten und vieles mehr. Wenn die getestete Bedingung wahr ist, gibt test
einen Exit-Status von Null zurück; andernfalls gibt es einen nicht-null Exit-Status zurück.
Beginnen wir mit den Grundlagen. Navigieren Sie zunächst in Ihr Projektverzeichnis:
cd ~/project
Der test
-Befehl kann auf zwei Arten geschrieben werden:
- Mit dem Wort
test
gefolgt von der Bedingung
- Mit eckigen Klammern
[ ]
um die Bedingung
Probieren wir beide Methoden aus, um zu prüfen, ob ein Verzeichnis existiert:
## Methode 1: Verwendung des Wortes 'test'
test -d ~/project && echo "Das Projektverzeichnis existiert."
## Methode 2: Verwendung von eckigen Klammern
[ -d ~/project ] && echo "Das Projektverzeichnis existiert."
Für beide Befehle sollten Sie die folgende Ausgabe sehen:
Das Projektverzeichnis existiert.
Die Option -d
prüft, ob ein Verzeichnis existiert. Der Operator &&
wird verwendet, um den echo
-Befehl nur auszuführen, wenn die Testbedingung wahr ist.
Einige häufige Dateiprüfoptionen sind:
-d
Datei: Wahr, wenn die Datei existiert und ein Verzeichnis ist
-e
Datei: Wahr, wenn die Datei existiert
-f
Datei: Wahr, wenn die Datei existiert und eine normale Datei ist
-r
Datei: Wahr, wenn die Datei existiert und lesbar ist
-w
Datei: Wahr, wenn die Datei existiert und beschreibbar ist
-x
Datei: Wahr, wenn die Datei existiert und ausführbar ist
-s
Datei: Wahr, wenn die Datei existiert und eine Größe größer als Null hat
Erstellen wir eine Testdatei und prüfen ihre Eigenschaften:
## Erstellen einer Testdatei
echo "Hello, Linux condition testing!" > test_file.txt
## Prüfen, ob die Datei existiert
test -e test_file.txt && echo "Die Datei existiert."
## Prüfen, ob die Datei lesbar ist
[ -r test_file.txt ] && echo "Die Datei ist lesbar."
## Prüfen, ob die Datei leer ist
[ -s test_file.txt ] && echo "Die Datei ist nicht leer."
Diese Befehle sollten die folgende Ausgabe erzeugen:
Die Datei existiert.
Die Datei ist lesbar.
Die Datei ist nicht leer.
Jetzt erstellen wir ein einfaches Shell-Skript, das den test
-Befehl verwendet, um zu prüfen, ob eine Datei existiert, und wenn nicht, sie zu erstellen:
## Erstellen einer Skriptdatei
cat > check_file.sh << 'EOF'
#!/bin/bash
FILENAME="status.txt"
if [ ! -e "$FILENAME" ]; then
echo "Datei $FILENAME existiert nicht. Erstelle sie jetzt."
echo "This is a status file." > "$FILENAME"
else
echo "Datei $FILENAME existiert bereits."
fi
## Anzeigen des Dateiinhalts
echo "Inhalt von $FILENAME:"
cat "$FILENAME"
EOF
## Macht das Skript ausführbar
chmod +x check_file.sh
## Ausführen des Skripts
./check_file.sh
Wenn Sie das Skript ausführen, sollten Sie eine Ausgabe ähnlich der folgenden sehen:
Datei status.txt existiert nicht. Erstelle sie jetzt.
Inhalt von status.txt:
This is a status file.
Wenn Sie das Skript erneut ausführen, sehen Sie:
Datei status.txt existiert bereits.
Inhalt von status.txt:
This is a status file.
Dies zeigt, wie der test
-Befehl verwendet werden kann, um die Existenz einer Datei zu prüfen und unterschiedliche Aktionen basierend auf dem Ergebnis auszuführen.