While
Version vom 17. Oktober 2025, 15:24 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= while-Schleifen = *Die while-Schleife in der Bash führt Befehle so lange aus, wie eine bestimmte Bedingung erfüllt ist.* *Sie ist ideal, wenn die Anzahl d…“)
while-Schleifen
- Die while-Schleife in der Bash führt Befehle so lange aus, wie eine bestimmte Bedingung erfüllt ist.*
- Sie ist ideal, wenn die Anzahl der Wiederholungen im Voraus nicht bekannt ist – z. B. beim Einlesen von Daten oder bei Wartebedingungen.*
Grundprinzip
- Vor jedem Durchlauf wird die Bedingung geprüft.
Solange der Rückgabewert (Exit-Status) der Bedingung 0 ist, wird der Schleifenrumpf ausgeführt.*
- Ergibt die Bedingung einen anderen Wert, wird die Schleife beendet.*
Syntax
while [ Bedingung ]; do Befehle done
Beispiel – Zählerschleife
- Ein einfaches Beispiel mit einer Zählvariablen.*
ZAHL=1 while [ $ZAHL -le 5 ]; do echo "Zahl: $ZAHL" ZAHL=$((ZAHL+1)) done
Ausgabe: Zahl: 1 Zahl: 2 Zahl: 3 Zahl: 4 Zahl: 5
Beispiel – Wartebedingung
- Solange eine Datei nicht existiert, wartet die Schleife.*
while [ ! -f /tmp/start.flag ]; do echo "Warte auf Startdatei..." sleep 2 done echo "Datei gefunden, starte Vorgang."
Beispiel – Datei zeilenweise einlesen
- Die while-Schleife eignet sich sehr gut, um Dateien zeilenweise zu lesen.*
while read ZEILE; do echo "Zeile: $ZEILE" done < /etc/passwd
Ausgabe (gekürzt): Zeile: root:x:0:0:root:/root:/bin/bash Zeile: daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin Zeile: bin:x:2:2:bin:/bin:/usr/sbin/nologin
- Das Umleitungszeichen "<" sorgt dafür, dass die Datei als Eingabequelle (STDIN) verwendet wird.*
- Jede Zeile wird nacheinander in die Variable ZEILE gelesen.*
Beispiel – Mit Exit-Status prüfen
- Die Bedingung in der while-Schleife basiert auf dem Rückgabewert eines Befehls (0 = wahr, ≠0 = falsch).*
- Dies kann auch mit "echo $?" überprüft werden.*
ping -c1 10.0.0.1 > /dev/null 2>&1 echo $? 0
while ping -c1 10.0.0.1 > /dev/null 2>&1; do echo "Host erreichbar" sleep 5 done
Hinweise
- Die Schleife wird beendet, sobald die Bedingung falsch ist (Exit-Code ≠ 0).
- Eine Endlosschleife kann mit "while true; do … done" erstellt werden.
- Mit "break" kann die Schleife vorzeitig verlassen werden.
- Mit "continue" wird der aktuelle Durchlauf übersprungen.
Aufgaben
- Erstellen Sie eine while-Schleife, die von 1 bis 10 zählt und jede Zahl ausgibt.
- Schreiben Sie ein Skript, das alle Zeilen einer Datei "/etc/passwd" einliest und nur die ersten fünf Zeilen ausgibt.
- Erstellen Sie eine Endlosschleife, die alle 3 Sekunden prüft, ob eine Datei "/tmp/testfile" existiert, und beendet sich, wenn sie gefunden wird.
- Erweitern Sie das Skript um die Ausgabe des Rückgabewerts ("echo $?") nach jeder Prüfung.