For-Schleife
Teil des Abschnitts Grundlagen der Terminal-Journey von Coddy — Lektion 71 von 82.
Manchmal müssen Sie eine Aktion mehrmals ausführen. Anstatt denselben Befehl immer wieder zu schreiben, können Sie eine for-Schleife verwenden, um durch eine Liste von Elementen zu iterieren und eine Aktion auf jedes auszuführen.
Hier ist die grundlegende Struktur einer for-Schleife in Bash:
#!/bin/bash
for name in Alice Bob Charlie; do
echo "Hello, $name!"
doneDieses Skript gibt für jeden Namen in der Liste eine Begrüßung aus. Die Variable name nimmt nacheinander jeden Wert an: zuerst "Alice", dann "Bob", dann "Charlie". Das do-Schlüsselwort markiert den Beginn des Schleifenrumpfs, und done beendet ihn.
For-Schleifen sind besonders leistungsstark, wenn sie mit Wildcards kombiniert werden. Man kann alle Dateien in einem Verzeichnis durchlaufen:
#!/bin/bash
for file in *.txt; do
echo "Processing $file"
doneDies iteriert durch jede .txt-Datei im aktuellen Verzeichnis. In jeder Iteration enthält die file-Variable den aktuellen Dateinamen, sodass Sie Operationen auf jeder Datei automatisch durchführen können.
Sie können auch mit der geschweiften Klammererweiterung durch einen Zahlenbereich iterieren:
#!/bin/bash
for i in {1..5}; do
echo "Number: $i"
doneDas druckt die Zahlen 1 bis 5 aus. For-Schleifen verwandeln wiederholende Aufgaben in nur wenige Codezeilen, was Ihre Skripte effizienter und leichter zu warten macht.
Aufgabe
EinfachErstellen Sie ein Shell-Skript namens countdown.sh, das eine for-Schleife verwendet, um einen Countdown von 5 bis 1 auszugeben.
Ihr Skript sollte:
- Mit der Shebang-Zeile beginnen (
#!/bin/bash) - Eine for-Schleife mit geschweifter-Klammer-Erweiterung verwenden, um durch die Zahlen von 5 bis 1 zu iterieren
- Jede Zahl in einer eigenen Zeile im Format:
Countdown: [number]ausgeben
Das Skript ausführbar machen und ausführen. Ihre Ausgabe sollte sein:
Countdown: 5
Countdown: 4
Countdown: 3
Countdown: 2
Countdown: 1Hinweis: Verwenden Sie
{5..1}, um einen absteigenden Bereich zu erstellen. In der Schleife verwenden Sieecho "Countdown: $i", wobeiiIhre Schleifenvariable ist.
Spickzettel
Eine for-Schleife ermöglicht es, durch eine Liste von Elementen zu iterieren und für jedes eine Aktion auszuführen.
Grundlegende Syntax:
for variable in list; do
# commands
doneSchleife über eine Liste von Werten:
for name in Alice Bob Charlie; do
echo "Hello, $name!"
doneSchleife über Dateien mit Wildcards:
for file in *.txt; do
echo "Processing $file"
doneSchleife über einen Zahlenbereich mit Brace-Expansion:
for i in {1..5}; do
echo "Number: $i"
doneFür absteigende Bereiche die Reihenfolge umkehren:
for i in {5..1}; do
echo "Number: $i"
doneProbier 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