1. Bedingungen in bash: if, else, und ein bisschen Magie
Wofür braucht man Bedingungen?
Bedingungen erlauben deinem Skript Entscheidungen zu treffen, basierend auf Eingaben, Variablen oder sogar den Ergebnissen von Befehlen. Zum Beispiel möchtest du prüfen, ob eine Datei existiert, oder sicherstellen, dass ein Server erreichbar ist, bevor du die nächste Aktion ausführst. Genau hier kommt die if-Struktur ins Spiel.
Grundsyntax
So sieht eine klassische if-Bedingung in bash aus:
if [ Bedingung ]; then
# Hier wird der Code ausgeführt, wenn die Bedingung wahr ist
echo "Bedingung erfüllt!"
else
# Hier wird der Code ausgeführt, wenn die Bedingung falsch ist
echo "Bedingung nicht erfüllt!"
fi
Schlüsselwörter:
if,then,elseundfi(Abschlussblock vonif) — das sind die magischen Wörter. Ohne sie funktioniert dein Skript nicht.- Eckige Klammern
[ ... ]werden verwendet, um Bedingungen zu überprüfen.
Beispiel 1: Überprüfung, ob eine Datei existiert
#!/bin/bash
FILE="/etc/passwd"
if [ -f $FILE ]; then
echo "Datei $FILE existiert."
else
echo "Datei $FILE nicht gefunden."
fi
Erklärung:
-füberprüft, ob die Datei existiert.- Wenn die Datei existiert, gibt der
echo-Befehl eine entsprechende Nachricht aus. Falls nicht, wird derelse-Block ausgeführt.
Bedingungen mit Befehlen
Du kannst das Ergebnis eines Befehls als Bedingung verwenden, denn in Linux ist alles ein Befehl.
Beispiel 2: Überprüfung der Erreichbarkeit einer Webseite
#!/bin/bash
if ping -c 1 example.com &> /dev/null; then
echo "Die Webseite ist erreichbar."
else
echo "Die Webseite ist nicht erreichbar."
fi
Erklärung:
ping -c 1sendet eine einzige Anfrage an den Server. Wenn er antwortet, wird die Bedingung wahr.&> /dev/nullversteckt die Ausgabe des Befehls, um das Terminal nicht zu überladen.
Die Verwendung des elif-Operators
Manchmal reichen if und else nicht aus. Du musst mehrere Bedingungen berücksichtigen. Hier kommt elif ins Spiel.
Beispiel 3: Bestimmung der Tageszeit
#!/bin/bash
HOUR=$(date +%H)
if [ $HOUR -lt 12 ]; then
echo "Guten Morgen!"
elif [ $HOUR -lt 18 ]; then
echo "Guten Tag!"
else
echo "Guten Abend!"
fi
Erklärung:
date +%Hgibt die aktuelle Stunde im 24-Stunden-Format zurück.- Wir vergleichen die aktuelle Zeit mit festen Werten: weniger als 12 — Morgen, weniger als 18 — Tag, sonst — Abend.
2. Schleifen in bash: Wiederholung ist die Mutter des Lernens
Schleifen sind eine Möglichkeit, dein Skript Aktionen wiederholen zu lassen, solange eine bestimmte Bedingung erfüllt ist. Das ist besonders nützlich, wenn man viele Dateien verarbeiten, eine Aufgabe mehrmals wiederholen oder auf ein bestimmtes Ereignis warten muss.
Die for-Schleife
for durchläuft eine Liste von Werten (z. B. Dateien oder Zahlen) und führt die angegebene Aktion für jeden dieser Werte aus.
Beispiel 4: Einfache for-Schleife
#!/bin/bash
for i in {1..5}; do
echo "Das ist die Iteration Nummer $i"
done
Erklärung:
{1..5}— eine Liste von Zahlen von 1 bis 5.- In jeder Iteration nimmt die Variable
ieinen Wert aus der Liste an.
Beispiel 5: Durchlaufen von Dateien in einem Verzeichnis
#!/bin/bash
for FILE in /etc/*; do
echo "Datei wird verarbeitet: $FILE"
done
Erklärung:
/etc/*— das ist eine Liste aller Dateien im Ordner/etc.- In jeder Iteration enthält die Variable
FILEden Namen einer Datei.
Die while-Schleife
while führt Aktionen aus, solange eine Bedingung erfüllt ist.
Beispiel 6: Errate die Zahl
#!/bin/bash
SECRET=5
GUESS=0
while [ $GUESS -ne $SECRET ]; do
echo "Gib deine Vermutung ein (eine Zahl von 1 bis 10):"
read GUESS
done
echo "Du hast es erraten!"
Erklärung:
[ $GUESS -ne $SECRET ]— die Bedingung gilt, solange die eingegebene ZahlGUESSnicht gleich der geheimen ZahlSECRETist.
Kombination von Schleifen und Bedingungen
Manchmal arbeiten Bedingungen und Schleifen zusammen.
Beispiel 7: Überprüfung mehrerer Websites
#!/bin/bash
SITES=("example.com" "google.com" "nonexistent.website")
for SITE in ${SITES[@]}; do
if ping -c 1 $SITE &> /dev/null; then
echo "$SITE ist erreichbar."
else
echo "$SITE ist nicht erreichbar."
fi
done
Erklärung:
- Das Array
SITESenthält eine Liste von Websites. fordurchläuft jede Website aus dem Array.ifüberprüft die Erreichbarkeit der Website mitping.
3. Praktische Übungen
Domain-Überprüfung
Schreibe ein Skript, das einen Domainnamen als Argument entgegennimmt und seine Erreichbarkeit überprüft.
Tipp:
if ping -c 1 $1 &> /dev/null; then
echo "Domain ist erreichbar."
else
echo "Domain ist nicht erreichbar."
fi
Arbeiten mit Dateien
Schreibe ein Skript, das überprüft, ob mehrere Dateien existieren, und das Ergebnis für jede Datei ausgibt.
Tipp:
FILES=("file1.txt" "file2.txt" "/etc/passwd")
for FILE in ${FILES[@]}; do
if [ -f $FILE ]; then
echo "$FILE existiert."
else
echo "$FILE wurde nicht gefunden."
fi
done
Multiplikationstabelle
Schreibe ein Skript mit verschachtelten Schleifen, das die Multiplikationstabelle für Zahlen von 1 bis 10 ausgibt.
Tipp:
for i in {1..10}; do
for j in {1..10}; do
echo -n "$((i * j)) "
done
echo ""
done
Jetzt kannst du Intelligenz und Logik zu deinen Bash-Skripten hinzufügen. Bedingungen ermöglichen es dir, Zustände zu überprüfen und Entscheidungen zu treffen, während Schleifen dir helfen, wiederholende Aufgaben zu automatisieren. Es wartet noch mehr Potenzial für die Automatisierung von Aufgaben auf dich!
GO TO FULL VERSION