Kommandozeile Schnellstart – Loops
Eine der Hauptgründe, warum wir Computer benutzten, ist dass sie Aufgaben sehr zuverlässig nahezu beliebig oft hintereinander ausführen. Wir verwenden dazu syntaktische Konstrukte, die Loops oder Wiederholungen genannt werden. Wie die meisten Programmiersprachen besitzt auch Bash die Möglichkeit, Wiederholungen ausführen zu können.
Wei die meisten Programmiersprachen kennt Bash for-loops und while-loops. Im Gegensatz zu C ist der do-while loop nicht implementiert, dafür gibt es (wie in Perl) ein Konstrukt namens until. Wir wollen uns die einzelnen Loops im Detail ansehen.
1. while-loop
Der while-loop führt ein Kommando so lange aus, bis eine bestimmte Kondition nicht mehr erfüllt ist. Das hört sich kompliziert an, ist aber eigentlich sehr einfach.
Syntax
while [[Kondition]]; do
<Statement>
done
Hierbei wird der Befehl so lange ausgeführt, bis die Kondition zu falsch (false) evaluiert. Wenn wir keine Dauerschleife produzieren wollen, müssen wir also im <Statement>-Bereich die Kondition modifizieren.
Wir wollen uns dazu ein Beispiel ansehen:
Code-Beispiel
#!/bin/bash
i=20
while [[ i -gt 0 ]]; do
echo $i
((i=i-1))
done
Hier wird die Variable i zu 20 initialisiert. Die Kondition so lange unsere Schleife läuft ist, dass die Variable i größer als 0 sein muss. Im Body-Bereich der Schleife, der unsere Statements erhält, dekrementieren wir die Variable i in jedem Durchlauf um eins (wir ziehen also jedesmal eins ab). Zudem geben wir den aktuellen Wert der Variable i aus.
Unsere Schleife wird also 20 Durchläuft haben und jedes mal wird uns der aktuelle Wert der Variable i ausgegeben.
Dies ist die generelle Funktionsweise der while-Schleife. While-Schleifen werden gern eingesetzt, um Aufgaben abzuarbeiten, bei denen vorher nicht eindeutig bekannt ist, wie oft sie durchlaufen werden.
2. For-Schleife
Im Gegensatz zur while-Schleife ist bei der for-Schleife im vorneherein bekannt, wie oft sie durchlaufen wird.
Syntax
for i in {Intervall}
do
<Statement>
done
Hierbei wird das Statement genauso oft ausgeführt, wie im Intervall angegeben. Wir wollen uns dazu ein Beispiel ansehen.
Code-Beispiel
for i in {1..5}
do
echo "$i"
done
Hierbei wird der Loop fünf mal durchlaufen und jedes Mal wird das echo-Statement mit dem aktuellen Wert von i ausgeführt.
Der Vorteil des for-loops ist dabei, das sehr kontrolliert bestimmt wird, wie oft der Loop ausgeführt wird.
Deine Aufgabe - Jetzt bist du dran:
Erstelle eine for-Schleife (Loop), die 10-mal den String "Ich mag Bash-Scripting" ausgibt.
Hinweis: Benutze für dein Bash-Skript den oberen (weißen) Bereich des Editors. Klicke dann auf "Run", um dein Skript zu starten.
[lp_spoiler title="Lösung anzeigen" class="da"]
Ich habe in meiner Lösung zusätzlich die Variable $i bei jedem Durchlaufen der Schleife gedruckt:
for i in {1..10}
do
echo "$i Ich mag Bash-Scripting"
done
[/lp_spoiler]
Zusammenfassung
Die for- und while-loops entsprechen in ihren Funktionalitäten ihren Pendants in den gängigen Programmiersprachen. Mit den Loops lassen sich Statements entweder solange ausführen, bis ein bestimmtes Ereignis eintritt (while-loop) oder kontrolliert eine festgelegte Anzahl von Durchlaufen (for-loop).