Shell Scripting - For Loops
Inhaltsverzeichnis:
- Die Standard-Bash-For-Schleife
- Schleife über Saiten
- Schleife über einen Nummernbereich
- Schleife über Array-Elemente
- Der C-Style Bash for Loop
- Anweisungen unterbrechen und fortsetzen
- Break-Anweisung
- Continue-Anweisung
- Beispiele für Bash For-Schleifen
- Umbenennen von Dateien mit Leerzeichen im Dateinamen
- Dateierweiterung ändern
- Fazit
Schleifen sind eines der grundlegenden Konzepte von Programmiersprachen. Schleifen sind praktisch, wenn Sie eine Reihe von Befehlen immer wieder ausführen möchten, bis eine bestimmte Bedingung erreicht ist.
In Skriptsprachen wie Bash sind Schleifen hilfreich, um sich wiederholende Aufgaben zu automatisieren.
In Bash-Skripten gibt es drei grundlegende Schleifenkonstrukte: for loop, while loop und until loop.
In diesem Tutorial werden die Grundlagen von for-Schleifen in Bash behandelt. Wir zeigen Ihnen auch, wie Sie die break- und continue-Anweisungen verwenden, um den Ablauf einer Schleife zu ändern.
Die Standard-Bash-For-Schleife
Die for-Schleife durchläuft eine Liste von Elementen und führt die angegebenen Befehle aus.
Die Bash for-Schleife hat die folgende Form:
for item in do done
Die Liste kann aus einer Reihe von durch Leerzeichen getrennten Zeichenfolgen, einem Zahlenbereich, der Ausgabe eines Befehls, einem Array usw. bestehen.
Schleife über Saiten
Im folgenden Beispiel durchläuft die Schleife jedes Element in der Liste der Zeichenfolgen, und das variable
element
wird auf das aktuelle Element gesetzt.
for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done
Die Schleife erzeugt die folgende Ausgabe:
Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium
Schleife über einen Nummernbereich
Mit dem Sequenzausdruck können Sie einen Bereich von Zahlen oder Zeichen angeben, indem Sie einen Anfangs- und einen Endpunkt des Bereichs definieren. Der Sequenzausdruck hat die folgende Form:
{START..END}
Im folgenden Beispiel durchläuft die Schleife alle Zahlen von 0 bis 3.
for i in {0..3} do echo "Number: $i" done
Number: 0 Number: 1 Number: 2 Number: 3
Ab Bash 4 kann bei der Verwendung von Bereichen auch ein Inkrement angegeben werden. Der Ausdruck hat folgende Form:
{START..END..INCREMENT}
for i in {0..20..5} do echo "Number: $i" done
Number: 0 Number: 5 Number: 10 Number: 15 Number: 20
Schleife über Array-Elemente
Sie können die for-Schleife auch verwenden, um ein Array von Elementen zu durchlaufen:
Im folgenden Beispiel definieren wir ein Array
BOOKS
und iterieren über jedes Element des Arrays.
BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done
Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby
Der C-Style Bash for Loop
Die Syntax des C-Stils für die Schleife hat die folgende Form:
for ((INITIALIZATION; TEST; STEP)) do done
Der
INITIALIZATION
Teil wird nur einmal ausgeführt, wenn die Schleife startet. Dann wird der
TEST
Teil ausgewertet. Wenn es falsch ist, wird die for-Schleife beendet. Wenn der
TEST
wahr ist, werden Befehle im Rumpf der for-Schleife ausgeführt und der
STEP
Teil aktualisiert.
Im folgenden Code beginnt die Schleife mit der Initialisierung von
i = 0
und prüft dann vor jeder Iteration, ob
i ≤ 10
. Wenn true, wird der aktuelle Wert von
i
und
i
mit 1 (
i++
)
i++
andernfalls wird die Schleife beendet.
for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done
Die Schleife iteriert 1001-mal und erzeugt die folgende Ausgabe:
Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000
Anweisungen unterbrechen und fortsetzen
Mit den Anweisungen break und continue kann die Ausführung der for-Schleife gesteuert werden.
Break-Anweisung
Die break-Anweisung beendet die aktuelle Schleife und übergibt die Programmsteuerung an die Anweisung, die auf die terminierte Anweisung folgt. Es wird normalerweise verwendet, um die Schleife zu beenden, wenn eine bestimmte Bedingung erfüllt ist.
Im folgenden Beispiel verwenden wir die if-Anweisung, um die Ausführung der Schleife zu beenden, sobald das aktuell iterierte Element gleich 'Lithium' ist.
for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'
Element: Hydrogen Element: Helium All Done!
Continue-Anweisung
Die continue-Anweisung beendet die aktuelle Iteration einer Schleife und übergibt die Programmsteuerung an die nächste Iteration der Schleife.
Im folgenden Beispiel wird ein Bereich von Zahlen durchlaufen, und wenn das aktuelle iterierte Element gleich '2' ist, führt die continue-Anweisung dazu, dass die Ausführung zum Anfang der Schleife zurückkehrt und mit der nächsten Iteration fortgesetzt wird.
for i in {1..5}; do if]; then continue fi echo "Number: $i" done
Number: 1 Number: 3 Number: 4 Number: 5
Beispiele für Bash For-Schleifen
Umbenennen von Dateien mit Leerzeichen im Dateinamen
Das folgende Beispiel zeigt, wie Sie die Bash for-Schleife verwenden, um alle Dateien im aktuellen Verzeichnis mit einem Leerzeichen im Namen umzubenennen, indem Sie das Leerzeichen durch einen Unterstrich ersetzen.
for file in *\ *; do mv "$file" "${file// /_}" done
Lassen Sie uns den Code zeilenweise aufschlüsseln:
- Die erste Zeile erstellt eine for-Schleife und durchläuft eine Liste aller Dateien mit einem Leerzeichen im Namen. Der Ausdruck
*\ *
erstellt die Liste. Die zweite Zeile gilt für jedes Element der Liste und verschiebt die Datei in eine neue, wobei das Leerzeichen durch einen Unterstrich (_
) ersetzt wird. Der Teil${file// /_}
verwendet die Shell-Parametererweiterung, um ein Muster innerhalb eines Parameters durch einen String zu ersetzen.done
gibt das Ende des Schleifensegments an.
Dateierweiterung ändern
Das folgende Beispiel zeigt, wie Sie mit der Bash for-Schleife alle mit.jpeg endenden Dateien im aktuellen Verzeichnis umbenennen, indem Sie die Dateierweiterung von.jpeg in.jpg ersetzen.
for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done
Lassen Sie uns den Code Zeile für Zeile analysieren:
- Die erste Zeile erstellt eine for-Schleife und durchläuft eine Liste aller Dateien, die mit ".jpeg" enden. Die zweite Zeile gilt für jedes Element der Liste und verschiebt die Datei in eine neue, wobei ".jpeg" durch ".jpg" ersetzt wird..
${file%.jpeg}
zum Entfernen des '.jpeg'-Teils aus dem Dateinamen unter Verwendung der durchgeführten Shell-Parameter-Erweiterung gibt das Ende des Schleifensegments an.
Fazit
Inzwischen sollten Sie ein gutes Verständnis dafür haben, wie Sie die Bash for-Schleife zum Durchlaufen von Listen verwenden.
Bash-Loop-TerminalMicrosoft Research Asia veranstaltet Gates zum 10-Jahres-Bash

Microsoft Research Asia ist von einem Dutzend Personen 1998 auf über 350 ein Jahrzehnt später gewachsen.
Ausführen von Bash unter Ubuntu unter Windows 10

Wenn Sie Windows Subsystem für Linux aktivieren, können Sie Bash unter Ubuntu in Bash-Skripten von Windows 10 ausführen , Linux-Kommandozeilen-Tools, Linux-First-Tools.
Bash till loop

In Skriptsprachen wie Bash sind Schleifen hilfreich, um sich wiederholende Aufgaben zu automatisieren. In diesem Tutorial werden die Grundlagen der till-Schleife in Bash erläutert. Die till-Schleife wird verwendet, um einen gegebenen Befehlssatz auszuführen, solange die gegebene Bedingung als falsch ausgewertet wird.