Bedingungen if
, else
und Schleifen for
, while
in bash
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
,else
undfi
(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 1
sendet eine einzige Anfrage an den Server. Wenn er antwortet, wird die Bedingung wahr.&> /dev/null
versteckt 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 +%H
gibt 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
i
einen 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
FILE
den 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 ZahlGUESS
nicht gleich der geheimen ZahlSECRET
ist.
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
SITES
enthält eine Liste von Websites. for
durchlä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