CodeGym /Kurse /Docker SELF /Bedingungen (`if`, `else`) und Schleifen (`for`, `while`)...

Bedingungen (`if`, `else`) und Schleifen (`for`, `while`) in bash

Docker SELF
Level 3 , Lektion 4
Verfügbar

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 und fi (Abschlussblock von if) — 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 der else-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 Zahl GUESS nicht gleich der geheimen Zahl SECRET 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 mit ping.

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!

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION