For: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „= for-Schleifen = *Die for-Schleife in der Bash dient zur wiederholten Ausführung von Befehlen für eine Liste, eine Befehlsausgabe oder einen Zahlenbereich.…“) |
|||
| (3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | = for-Schleifen = | + | == for-Schleifen == |
| − | *Die for-Schleife in der Bash dient zur wiederholten Ausführung von Befehlen für eine Liste, eine Befehlsausgabe oder einen Zahlenbereich. | + | *Die for-Schleife in der Bash dient zur wiederholten Ausführung von Befehlen für eine Liste, eine Befehlsausgabe oder einen Zahlenbereich. |
| − | *Sie ist besonders nützlich, wenn eine bekannte Anzahl von Elementen durchlaufen werden soll. | + | *Sie ist besonders nützlich, wenn eine bekannte Anzahl von Elementen durchlaufen werden soll. |
== Grundprinzip == | == Grundprinzip == | ||
| − | *Die for-Schleife weist einer Variablen nacheinander jeden Wert aus einer Liste zu und führt für jeden Wert den Schleifenrumpf aus. | + | *Die for-Schleife weist einer Variablen nacheinander jeden Wert aus einer Liste zu und führt für jeden Wert den Schleifenrumpf aus. |
== Allgemeine Syntax == | == Allgemeine Syntax == | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | for VARIABLE in Liste | |
| − | + | do | |
| − | + | Befehle | |
| + | done | ||
| + | </syntaxhighlight> | ||
== Beispiel – einfache Werteliste == | == Beispiel – einfache Werteliste == | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | for FARBE in rot gruen blau | |
| − | + | do | |
| − | + | echo "Farbe: $FARBE" | |
| + | done | ||
| + | </syntaxhighlight> | ||
Ausgabe: | Ausgabe: | ||
| Zeile 25: | Zeile 29: | ||
== Beispiel – Dateien im Verzeichnis == | == Beispiel – Dateien im Verzeichnis == | ||
| − | *Die Schleife kann über alle Dateien in einem Verzeichnis iterieren. | + | *Die Schleife kann über alle Dateien in einem Verzeichnis iterieren. |
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | for DATEI in /etc/*.conf | |
| − | + | do | |
| − | + | echo "Konfigurationsdatei: $DATEI" | |
| − | + | done | |
| + | </syntaxhighlight> | ||
== Beispiel – Wertebereich mit seq == | == Beispiel – Wertebereich mit seq == | ||
| − | *Mit dem Kommando '''seq''' lassen sich Zahlenbereiche generieren. | + | *Mit dem Kommando '''seq''' lassen sich Zahlenbereiche generieren. |
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | for i in $(seq 1 5) | |
| − | + | do | |
| − | + | echo "Zahl: $i" | |
| − | + | done | |
| + | </syntaxhighlight> | ||
Ausgabe: | Ausgabe: | ||
| Zeile 48: | Zeile 54: | ||
== Die C-ähnliche for-Schleife == | == Die C-ähnliche for-Schleife == | ||
| − | *Ab Bash Version 3 kann die for-Schleife auch in einer C-ähnlichen Form geschrieben werden. | + | *Ab Bash Version 3 kann die for-Schleife auch in einer C-ähnlichen Form geschrieben werden. |
| − | *Sie eignet sich besonders für Zähleroperationen mit Startwert, Bedingung und Inkrement. | + | *Sie eignet sich besonders für Zähleroperationen mit Startwert, Bedingung und Inkrement. |
== Syntax (C-ähnlich) == | == Syntax (C-ähnlich) == | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | for ((Initialisierung; Bedingung; Inkrement)) | |
| − | + | do | |
| − | + | Befehle | |
| + | done | ||
| + | </syntaxhighlight> | ||
== Beispiel – Zähler von 1 bis 5 == | == Beispiel – Zähler von 1 bis 5 == | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | for ((i=1; i<=5; i++)) | |
| − | + | do | |
| − | + | echo "Wert: $i" | |
| + | done | ||
| + | </syntaxhighlight> | ||
Ausgabe: | Ausgabe: | ||
| Zeile 71: | Zeile 81: | ||
== Beispiel – Rückwärtszählen == | == Beispiel – Rückwärtszählen == | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | for ((x=10; x>=1; x--)) | |
| − | + | do | |
| − | + | echo "Countdown: $x" | |
| − | + | done | |
| + | echo "Start!" | ||
| + | </syntaxhighlight> | ||
== Beispiel – Mit Berechnung == | == Beispiel – Mit Berechnung == | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | for ((n=1; n<=5; n++)) | |
| − | + | do | |
| − | + | echo "$n * $n = $((n*n))" | |
| + | done | ||
| + | </syntaxhighlight> | ||
Ausgabe: | Ausgabe: | ||
| Zeile 91: | Zeile 105: | ||
== Beispiel – Parameterübergabe verarbeiten == | == Beispiel – Parameterübergabe verarbeiten == | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | for PARAM in "$@" | |
| − | + | do | |
| − | + | echo "Parameter: $PARAM" | |
| + | done | ||
| + | </syntaxhighlight> | ||
Aufruf: | Aufruf: | ||
| Zeile 105: | Zeile 121: | ||
== Beispiel – for mit Befehlsausgabe == | == Beispiel – for mit Befehlsausgabe == | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | for DATEI in $(ls /etc | grep conf) | |
| − | + | do | |
| − | + | echo "Gefunden: $DATEI" | |
| + | done | ||
| + | </syntaxhighlight> | ||
== Hinweise == | == Hinweise == | ||
| − | * | + | * do steht immer in einer eigenen Zeile. |
* Nach dem letzten Durchlauf behält die Variable ihren letzten Wert. | * Nach dem letzten Durchlauf behält die Variable ihren letzten Wert. | ||
* Die C-Schreibweise erfordert keine Befehlsersetzung (wie seq). | * Die C-Schreibweise erfordert keine Befehlsersetzung (wie seq). | ||
| − | * Mit | + | * Mit break kann eine Schleife beendet werden. |
| − | * Mit | + | * Mit continue wird der aktuelle Durchlauf übersprungen. |
| + | * Mit exit kann das gesamte Skript beendet werden (siehe Kontrollbefehle). | ||
== Aufgaben == | == Aufgaben == | ||
| − | * Schreiben Sie eine for-Schleife, die alle | + | * Schreiben Sie eine for-Schleife, die alle Dateien im Verzeichnis /var/log durchläuft und nur diejenigen ausgibt, die größer als 1 MB sind. |
| − | * | + | * Erstellen Sie eine for-Schleife, die alle Benutzer aus /etc/passwd einliest (cut -d: -f1) und zu jedem Benutzer den dazugehörigen Home-Pfad ausgibt. |
| − | + | * Schreiben Sie eine C-ähnliche for-Schleife, die von 20 rückwärts bis 0 zählt und nur Zahlen ausgibt, die durch 5 teilbar sind. | |
| − | * Schreiben Sie eine C-ähnliche Schleife, die von | + | * Verwenden Sie eine for-Schleife mit Befehlsausgabe, die alle laufenden Prozesse (ps -e) prüft und alle Prozesse ausgibt, deren Name „ssh“ enthält. |
| − | * | ||
Aktuelle Version vom 25. November 2025, 15:45 Uhr
for-Schleifen
- Die for-Schleife in der Bash dient zur wiederholten Ausführung von Befehlen für eine Liste, eine Befehlsausgabe oder einen Zahlenbereich.
- Sie ist besonders nützlich, wenn eine bekannte Anzahl von Elementen durchlaufen werden soll.
Grundprinzip
- Die for-Schleife weist einer Variablen nacheinander jeden Wert aus einer Liste zu und führt für jeden Wert den Schleifenrumpf aus.
Allgemeine Syntax
for VARIABLE in Liste
do
Befehle
done
Beispiel – einfache Werteliste
for FARBE in rot gruen blau
do
echo "Farbe: $FARBE"
done
Ausgabe: Farbe: rot Farbe: gruen Farbe: blau
Beispiel – Dateien im Verzeichnis
- Die Schleife kann über alle Dateien in einem Verzeichnis iterieren.
for DATEI in /etc/*.conf
do
echo "Konfigurationsdatei: $DATEI"
done
Beispiel – Wertebereich mit seq
- Mit dem Kommando seq lassen sich Zahlenbereiche generieren.
for i in $(seq 1 5)
do
echo "Zahl: $i"
done
Ausgabe: Zahl: 1 Zahl: 2 Zahl: 3 Zahl: 4 Zahl: 5
Die C-ähnliche for-Schleife
- Ab Bash Version 3 kann die for-Schleife auch in einer C-ähnlichen Form geschrieben werden.
- Sie eignet sich besonders für Zähleroperationen mit Startwert, Bedingung und Inkrement.
Syntax (C-ähnlich)
for ((Initialisierung; Bedingung; Inkrement))
do
Befehle
done
Beispiel – Zähler von 1 bis 5
for ((i=1; i<=5; i++))
do
echo "Wert: $i"
done
Ausgabe: Wert: 1 Wert: 2 Wert: 3 Wert: 4 Wert: 5
Beispiel – Rückwärtszählen
for ((x=10; x>=1; x--))
do
echo "Countdown: $x"
done
echo "Start!"
Beispiel – Mit Berechnung
for ((n=1; n<=5; n++))
do
echo "$n * $n = $((n*n))"
done
Ausgabe: 1 * 1 = 1 2 * 2 = 4 3 * 3 = 9 4 * 4 = 16 5 * 5 = 25
Beispiel – Parameterübergabe verarbeiten
for PARAM in "$@"
do
echo "Parameter: $PARAM"
done
Aufruf: ./skript.sh rot gruen blau
Ausgabe: Parameter: rot Parameter: gruen Parameter: blau
Beispiel – for mit Befehlsausgabe
for DATEI in $(ls /etc | grep conf)
do
echo "Gefunden: $DATEI"
done
Hinweise
- do steht immer in einer eigenen Zeile.
- Nach dem letzten Durchlauf behält die Variable ihren letzten Wert.
- Die C-Schreibweise erfordert keine Befehlsersetzung (wie seq).
- Mit break kann eine Schleife beendet werden.
- Mit continue wird der aktuelle Durchlauf übersprungen.
- Mit exit kann das gesamte Skript beendet werden (siehe Kontrollbefehle).
Aufgaben
- Schreiben Sie eine for-Schleife, die alle Dateien im Verzeichnis /var/log durchläuft und nur diejenigen ausgibt, die größer als 1 MB sind.
- Erstellen Sie eine for-Schleife, die alle Benutzer aus /etc/passwd einliest (cut -d: -f1) und zu jedem Benutzer den dazugehörigen Home-Pfad ausgibt.
- Schreiben Sie eine C-ähnliche for-Schleife, die von 20 rückwärts bis 0 zählt und nur Zahlen ausgibt, die durch 5 teilbar sind.
- Verwenden Sie eine for-Schleife mit Befehlsausgabe, die alle laufenden Prozesse (ps -e) prüft und alle Prozesse ausgibt, deren Name „ssh“ enthält.