Dieses Tutorial führt Sie in die Verwendung von Bash-if-Anweisungen mit mehreren Bedingungen ein, um Ihre Fähigkeiten im Shell-Skripting zu verbessern. Sie werden lernen, wie Sie logische Operatoren effektiv kombinieren können, sodass Sie Skripte erstellen können, die auf der Grundlage verschiedener Kriterien intelligente Entscheidungen treffen. Am Ende dieses Labs werden Sie in der Lage sein, vielseitige Automatisierungstools für alltägliche Aufgaben zu erstellen.
Mehr als nur ein Lerntext – erlebe es selbst.
Grundlagen von Bash-if-Anweisungen verstehen
Beginnen wir mit den Grundlagen. In Bash hilft die if-Anweisung Ihrem Skript zu entscheiden, was es tun soll, basierend darauf, ob eine Bedingung wahr oder falsch ist. Dies ist besonders nützlich, wenn Sie Aufgaben auf Ihrem Ubuntu-System automatisieren müssen.
Öffnen Sie Ihr Terminal im Standardverzeichnis /home/labex/project. Hier werden Sie alle Ihre Skripte schreiben. Um zu beginnen, erstellen Sie eine einfache Skriptdatei namens basic_if.sh, indem Sie Folgendes eingeben:
touch basic_if.sh
Fügen Sie den folgenden Code hinzu, um zu überprüfen, ob eine Datei existiert:
#!/bin/bash
if [[ -f "testfile.txt" ]]; then
echo "The file exists."
else
echo "The file does not exist."
fi
Dieses Skript verwendet [[ -f "testfile.txt" ]], um zu testen, ob testfile.txt in Ihrem aktuellen Verzeichnis existiert. Der echo-Befehl wird eine Nachricht anzeigen, je nachdem, wie das Ergebnis ausfällt.
Um das Skript ausführbar zu machen, geben Sie Folgendes ein:
chmod +x basic_if.sh
Führen Sie es dann aus:
./basic_if.sh
Da testfile.txt noch nicht existiert, sollten Sie "The file does not exist." sehen. Erstellen Sie nun die Datei, um das andere Ergebnis zu sehen:
touch testfile.txt
Führen Sie das Skript erneut aus:
./basic_if.sh
Jetzt sollte es "The file exists." ausgeben. Dieser Schritt führt Sie in die Grundstruktur ein: if, then, else und fi. Die doppelten eckigen Klammern [[ ]] sind ein modernes Bash-Feature, das die Bedingungsprüfung zuverlässiger macht als einfache eckige Klammern.
Hinzufügen mehrerer Bedingungen mit AND (&&)
Jetzt machen wir Ihre if-Anweisung schlauer, indem wir mehrere Bedingungen gleichzeitig überprüfen. Sie werden den &&-Operator (AND) verwenden, der erfordert, dass alle Bedingungen wahr sind, damit der then-Block ausgeführt wird.
Öffnen Sie erneut die Datei basic_if.sh und ersetzen Sie ihren Inhalt durch das folgende aktualisierte Skript:
#!/bin/bash
if [[ -f "testfile.txt" ]] && [[ -r "testfile.txt" ]]; then
echo "The file exists and is readable."
else
echo "The file is either missing or not readable."
fi
Dieses Skript überprüft zwei Dinge: ob testfile.txt existiert (-f) und ob es lesbar ist (-r). Beide Bedingungen müssen wahr sein, damit die erste Nachricht angezeigt wird.
Führen Sie das Skript aus:
./basic_if.sh
Da Sie testfile.txt in Schritt 1 erstellt haben und es standardmäßig lesbar ist (da labex der Besitzer ist), sollten Sie "The file exists and is readable." sehen. Um zu verstehen, wie && funktioniert, testen wir das Gegenteil. Ändern Sie die Dateiberechtigungen, um die Datei nicht lesbar zu machen:
chmod u-r testfile.txt
Führen Sie das Skript erneut aus:
./basic_if.sh
Jetzt wird "The file is either missing or not readable" ausgegeben, da die zweite Bedingung (-r) fehlschlägt. Stellen Sie die Lesbarkeit für die nächsten Schritte wieder her:
chmod u+r testfile.txt
Der &&-Operator stellt sicher, dass jede Bedingung erfüllt sein muss – ideal für Situationen, in denen mehrere Kriterien wichtig sind.
Einfach starten, ohne Installation.
Verwendung von OR (||) für flexible Bedingungen
Als Nächstes werden Sie den ||-Operator (OR) erkunden, der es ermöglicht, dass der then-Block ausgeführt wird, wenn mindestens eine Bedingung wahr ist. Dies ist nützlich, wenn Sie Flexibilität bei Ihren Prüfungen wünschen.
Öffnen Sie erneut die Datei basic_if.sh und aktualisieren Sie sie mit folgendem Code:
#!/bin/bash
if [[ -f "testfile.txt" ]] || [[ -f "backup.txt" ]]; then
echo "At least one file exists."
else
echo "Neither file exists."
fi
Dieses Skript überprüft, ob entweder testfile.txt oder backup.txt existiert. Da testfile.txt bereits in Ihrem Verzeichnis vorhanden ist, führen Sie es aus:
./basic_if.sh
Sie sollten "At least one file exists." sehen. Entfernen Sie nun testfile.txt, um die ||-Logik zu testen:
rm testfile.txt
Führen Sie das Skript erneut aus:
./basic_if.sh
Es wird "Neither file exists" ausgegeben, da keine der beiden Dateien vorhanden ist. Erstellen Sie backup.txt, um zu sehen, dass die OR-Bedingung erfüllt ist:
touch backup.txt
./basic_if.sh
Jetzt wird wieder "At least one file exists" ausgegeben. Der ||-Operator ist ideal, wenn es ausreicht, dass eine einzige Bedingung wahr ist.
Kombination von AND- und OR-Operatoren
Lassen Sie uns && und || für komplexere Logik kombinieren. Sie werden überprüfen, ob eine Datei existiert und bestimmte Kriterien erfüllt, mit einer Fallback-Bedingung.
Öffnen Sie erneut die Datei basic_if.sh und aktualisieren Sie sie mit folgendem Code:
#!/bin/bash
if [[ -f "testfile.txt" ]] && [[ -r "testfile.txt" ]] || [[ -f "backup.txt" ]]; then
echo "Either testfile.txt is readable or backup.txt exists."
else
echo "No suitable file found."
fi
Dieses Skript überprüft, ob testfile.txt existiert und lesbar ist oder ob backup.txt existiert. Erstellen Sie testfile.txt erneut:
touch testfile.txt
Führen Sie das Skript aus:
./basic_if.sh
Es wird "Either testfile.txt is readable or backup.txt exists" ausgegeben, da testfile.txt beide Bedingungen erfüllt. Entfernen Sie testfile.txt und behalten Sie backup.txt:
rm testfile.txt
./basic_if.sh
Die gleiche Nachricht erscheint, da backup.txt die ||-Bedingung erfüllt. Entfernen Sie auch backup.txt:
rm backup.txt
./basic_if.sh
Jetzt wird "No suitable file found." ausgegeben. Dieser Schritt zeigt, wie Sie Operatoren kombinieren können, um differenzierte Entscheidungen zu treffen.
Lesen reicht nicht – Programmieren ist Praxis.
Anwenden von Bedingungen auf eine praktische Aufgabe
Schließlich verwenden wir das, was Sie gelernt haben, in einem realen Szenario: der Validierung von Benutzereingaben. Sie werden ein Skript schreiben, um zu überprüfen, ob eine Zahl in einem bestimmten Bereich liegt.
Erstellen Sie ein neues Skript namens number_check.sh:
touch number_check.sh
chmod +x number_check.sh
Fügen Sie folgenden Code hinzu:
#!/bin/bash
read -p "Enter a number between 1 and 10: " number
if [[ "$number" -ge 1 ]] && [[ "$number" -le 10 ]]; then
echo "Valid number: $number"
else
echo "Invalid number. Please enter a value between 1 and 10."
fi
Dieses Skript fordert Sie auf, eine Zahl einzugeben und verwendet dann &&, um sicherzustellen, dass die Zahl zwischen 1 und 10 (einschließlich) liegt. Führen Sie es aus:
./number_check.sh
Geben Sie 5 ein und drücken Sie Enter. Sie sollten "Valid number: 5" sehen. Führen Sie das Skript erneut aus und geben Sie 15 ein. Es antwortet mit "Invalid number. Please enter a value between 1 and 10." Dies ist eine praktische Methode, um Benutzereingaben zu verarbeiten und sicherzustellen, dass Ihr Skript nur mit gültigen Daten fortfährt.
Zusammenfassung
In diesem Lab haben Sie Bash-if-Anweisungen mit mehreren Bedingungen mithilfe der Operatoren && und || beherrscht. Von der Überprüfung von Dateieigenschaften bis zur Validierung von Benutzereingaben haben Sie Skripte erstellt, die Entscheidungen auf der Grundlage komplexer Kriterien treffen. Mit diesen Fähigkeiten können Sie zuverlässige Automatisierungstools erstellen, die auf die verschiedenen Anforderungen Ihres Ubuntu-Systems zugeschnitten sind.