For: Unterschied zwischen den Versionen

Aus Xinux Wiki
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 ==
for VARIABLE in Liste
+
<syntaxhighlight lang="bash">
do
+
for VARIABLE in Liste
  Befehle
+
do
done
+
  Befehle
 +
done
 +
</syntaxhighlight>
  
 
== Beispiel – einfache Werteliste ==
 
== Beispiel – einfache Werteliste ==
for FARBE in rot gruen blau
+
<syntaxhighlight lang="bash">
do
+
for FARBE in rot gruen blau
  echo "Farbe: $FARBE"
+
do
done
+
  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
+
for DATEI in /etc/*.conf
do
+
do
  echo "Konfigurationsdatei: $DATEI"
+
  echo "Konfigurationsdatei: $DATEI"
done
+
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)
+
for i in $(seq 1 5)
do
+
do
  echo "Zahl: $i"
+
  echo "Zahl: $i"
done
+
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) ==
for ((Initialisierung; Bedingung; Inkrement))
+
<syntaxhighlight lang="bash">
do
+
for ((Initialisierung; Bedingung; Inkrement))
  Befehle
+
do
done
+
  Befehle
 +
done
 +
</syntaxhighlight>
  
 
== Beispiel – Zähler von 1 bis 5 ==
 
== Beispiel – Zähler von 1 bis 5 ==
for ((i=1; i<=5; i++))
+
<syntaxhighlight lang="bash">
do
+
for ((i=1; i<=5; i++))
  echo "Wert: $i"
+
do
done
+
  echo "Wert: $i"
 +
done
 +
</syntaxhighlight>
  
 
  Ausgabe:
 
  Ausgabe:
Zeile 71: Zeile 81:
  
 
== Beispiel – Rückwärtszählen ==
 
== Beispiel – Rückwärtszählen ==
for ((x=10; x>=1; x--))
+
<syntaxhighlight lang="bash">
do
+
for ((x=10; x>=1; x--))
  echo "Countdown: $x"
+
do
done
+
  echo "Countdown: $x"
echo "Start!"
+
done
 +
echo "Start!"
 +
</syntaxhighlight>
  
 
== Beispiel – Mit Berechnung ==
 
== Beispiel – Mit Berechnung ==
for ((n=1; n<=5; n++))
+
<syntaxhighlight lang="bash">
do
+
for ((n=1; n<=5; n++))
  echo "$n * $n = $((n*n))"
+
do
done
+
  echo "$n * $n = $((n*n))"
 +
done
 +
</syntaxhighlight>
  
 
  Ausgabe:
 
  Ausgabe:
Zeile 91: Zeile 105:
  
 
== Beispiel – Parameterübergabe verarbeiten ==
 
== Beispiel – Parameterübergabe verarbeiten ==
for PARAM in "$@"
+
<syntaxhighlight lang="bash">
do
+
for PARAM in "$@"
  echo "Parameter: $PARAM"
+
do
done
+
  echo "Parameter: $PARAM"
 +
done
 +
</syntaxhighlight>
  
 
  Aufruf:
 
  Aufruf:
Zeile 105: Zeile 121:
  
 
== Beispiel – for mit Befehlsausgabe ==
 
== Beispiel – for mit Befehlsausgabe ==
for DATEI in $(ls /etc | grep conf)
+
<syntaxhighlight lang="bash">
do
+
for DATEI in $(ls /etc | grep conf)
  echo "Gefunden: $DATEI"
+
do
done
+
  echo "Gefunden: $DATEI"
 +
done
 +
</syntaxhighlight>
  
 
== Hinweise ==
 
== Hinweise ==
* '''do''' steht immer in einer eigenen Zeile.
+
* 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 '''break''' kann eine Schleife beendet werden.
+
* Mit break kann eine Schleife beendet werden.
* Mit '''continue''' wird der aktuelle Durchlauf übersprungen.
+
* 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 Farben aus einer Liste ausgibt.
+
* 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.
* Schreiben Sie eine for-Schleife mit '''seq''', die von 1 bis 10 zählt.
+
* 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.
* Verwenden Sie die C-ähnliche Syntax, um alle geraden Zahlen von 2 bis 10 auszugeben.
+
* 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 10 rückwärts zählt.
+
* Verwenden Sie eine for-Schleife mit Befehlsausgabe, die alle laufenden Prozesse (ps -e) prüft und alle Prozesse ausgibt, deren Name „ssh“ enthält.
* Erstellen Sie ein Skript, das über alle an das Skript übergebenen Parameter iteriert und sie nummeriert ausgibt.
 

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.