While-Schleife
Teil des Abschnitts Grundlagen der Terminal-Journey von Coddy. Lektion 72 von 82.
Die for-Schleife ist praktisch, wenn du genau weißt, welche Elemente du durchlaufen möchtest. Aber was, wenn du so lange eine Schleife ausführen möchtest, bis sich eine bestimmte Bedingung ändert? Hier kommt die while-Schleife ins Spiel.
Eine while-Schleife läuft weiter, solange ihre Bedingung wahr bleibt. Hier ist die grundlegende Struktur:
#!/bin/bash
count=1
while [ $count -le 5 ]; do
echo "Count: $count"
count=$((count + 1))
doneDieses Skript gibt die Zahlen 1 bis 5 aus.
Die Schleife prüft, ob count kleiner oder gleich 5 ist. Wenn das zutrifft, führt sie den Schleifenkörper aus, erhöht den Zähler mithilfe von $((...)) für die Arithmetik und prüft erneut.
Sobald count den Wert 6 erreicht, wird die Bedingung falsch und die Schleife wird beendet.
While-Schleifen eignen sich perfekt, wenn du im Voraus nicht weißt, wie viele Iterationen du benötigst. Zum Beispiel könntest du so lange nach einer Eingabe fragen, bis der Benutzer „quit“ eingibt:
#!/bin/bash
input=""
while [ "$input" != "quit" ]; do
read -p "Enter command (quit to exit): " input
echo "You entered: $input"
doneSei vorsichtig mit while-Schleifen. Wenn die Bedingung nie falsch wird, läuft deine Schleife endlos.
Stelle immer sicher, dass sich innerhalb der Schleife irgendwann etwas an der Bedingung ändert, zum Beispiel durch das Erhöhen eines Zählers oder das Aktualisieren einer Variable auf Grundlage von Benutzereingaben.
Aufgabe
EinfachErstelle ein Shell-Skript namens counter.sh, das eine while-Schleife verwendet, um die Zahlen von 1 bis 4 auszugeben.
Dein Skript sollte:
- Mit der Shebang-Zeile beginnen (
#!/bin/bash) - Eine Variable namens
nummit dem Anfangswert1erstellen - Eine while-Schleife verwenden, die so lange fortgesetzt wird, wie
numkleiner oder gleich 4 ist - Innerhalb der Schleife die aktuelle Zahl im folgenden Format ausgeben:
Number: [num] numnach jeder Iteration mithilfe von$((num + 1))um 1 erhöhen
Mache das Skript ausführbar und führe es aus. Deine Ausgabe sollte lauten:
Number: 1
Number: 2
Number: 3
Number: 4Hinweis: Verwende
-lefür den Vergleich „kleiner oder gleich“. Denke daran, den Zähler innerhalb der Schleife mitnum=$((num + 1))zu erhöhen, um eine Endlosschleife zu vermeiden. Beende deine while-Schleife mitdone.
Probier es selbst
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Verzeichnisse
Ein Verzeichnis erstellenEin Verzeichnis kopierenEin Verzeichnis verschieben und umbenennenEin Verzeichnis löschenZusammenfassung - Verzeichnisoperationen7Dateiinhalt
Head und TailWortanzahlSort-BefehlUniq-BefehlGrep GrundlagenGrep mit FlagsZusammenfassung - Textdetektiv10Log-Analyzer-Projekt
ProjektübersichtAnzeigen der Logdatei13Grundlagen der Shell-Skripte
Was ist ein Shell-SkriptEin Skript erstellen und ausführenVariablen in SkriptenBenutzereingabe in SkriptenIf-AnweisungFor-SchleifeWhile-SchleifeZusammenfassung - Zahlenraten2Navigation
Arbeitsverzeichnis anzeigenDateien auflistenVerzeichnis wechselnAbsolute vs. relative PfadeHome- und Root-VerzeichnisZusammenfassung - Den Weg finden8Umleitung
StandardausgabeIn eine Datei überschreibenAn eine Datei anhängenStandardeingabeStandardfehlerausgabeZusammenfassung – Log-Builder3Dateien
Eine Datei erstellenEine Datei lesenEine Datei kopierenEine Datei verschieben und umbenennenEine Datei löschenZusammenfassung - Dateioperationen6Wildcards und Muster
Die Sternchen-WildcardDie Fragezeichen-WildcardKlammer-WildcardsWildcards kombinierenZusammenfassung - Selektive Operationen9Pipes
Was ist eine PipeVerkettung zweier BefehleVerkettung mehrerer BefehlePipe mit GrepZusammenfassung - Daten-PipelineÜbe selbstständig: Terminal-Playground