bash for i in seq: So nutze ich Zahlen-Schleifen in Bash richtig
Ich nutze bash for i in seq, wenn ich eine einfache Zahlenfolge in Bash brauche. Kein Overengineering. Kein unnötiger Code. Nur eine Schleife, die tut, was sie soll.
Wenn du Dateien umbenennen, Jobs testen, Verzeichnisse anlegen oder wiederholte Befehle automatisieren willst, ist das ein Werkzeug, das du schnell beherrschen solltest. Ich zeige dir hier, wie es funktioniert, wann ich es verwende und wann ich bewusst eine andere Lösung nehme.
Was bedeutet bash for i in seq überhaupt?
Die Idee ist simpel: seq erzeugt eine Zahlenreihe, und die for-Schleife läuft diese Werte nacheinander durch. Das Muster sieht so aus:
for i in $(seq 1 5); do
echo "$i"
done
Das gibt die Zahlen 1 bis 5 aus. Mehr ist es nicht. Genau deshalb ist es so nützlich.
Du kannst damit auch andere Bereiche abdecken:
- Startwert: erste Zahl der Sequenz
- Endwert: letzte Zahl der Sequenz
- Schrittweite: wie groß der Sprung zwischen den Zahlen ist
bash for i in seq: Die wichtigsten Varianten
Ich arbeite meistens mit drei Varianten. Die reichen in 90 Prozent der Fälle aus.
1. Einfache Zahlenfolge
for i in $(seq 1 10); do
echo "Nummer: $i"
done
Das ist die Standardlösung für eine Folge von 1 bis 10.
2. Zahlen mit Schrittweite
for i in $(seq 0 2 10); do
echo "$i"
done
Hier springt die Schleife in Zweierschritten: 0, 2, 4, 6, 8, 10.
3. Abwärts zählen
for i in $(seq 10 -1 1); do
echo "$i"
done
Das ist praktisch, wenn du in umgekehrter Reihenfolge arbeiten willst.
Warum ich bash for i in seq nutze
Weil es schnell ist. Weil es lesbar ist. Weil es in vielen Skripten direkt ausreicht.
Ich brauche keine komplexe Logik, wenn ich nur 20 Durchläufe will. Ich will ein Skript, das ich in 10 Sekunden verstehe. Genau dafür ist bash for i in seq stark.
Typische Anwendungsfälle:
- Dateien mit laufender Nummer erzeugen
- Tests mehrfach ausführen
- Werte in einem Bereich abarbeiten
- Batch-Jobs steuern
- Dummy-Daten oder Ordner anlegen
bash for i in seq: Saubere Syntax ohne Stolperfallen
Hier kommt der Teil, der dir Zeit spart. Viele schreiben die Schleife so, dass sie zwar funktioniert, aber unnötig fehleranfällig ist.
Wichtig: Verwende Quotes sauber und achte auf Leerzeichen.
for i in $(seq 1 5); do
echo "$i"
done
Das funktioniert gut in vielen Fällen. Trotzdem gibt es einen Haken: $(seq ...) erzeugt erst die komplette Liste und übergibt sie an die Shell. Für kleine Bereiche ist das okay. Für größere Bereiche gibt es bessere Lösungen.
Bessere Alternative in Bash für einfache Zahlenbereiche
Wenn ich in Bash direkt Zahlen durchlaufen will, nutze ich oft lieber diese Form:
for i in {1..10}; do
echo "$i"
done
Das ist kürzer und in vielen Fällen eleganter. Wenn du aber eine variable Schrittweite oder komplexere Bereiche brauchst, ist seq weiterhin stark.
Hier ist meine Regel:
- {1..10} für einfache, feste Bereiche
- seq für Schrittweiten, Variablen und flexible Bereiche
Wann bash for i in seq die bessere Wahl ist
Ich nehme bash for i in seq, wenn der Bereich dynamisch ist. Zum Beispiel, wenn Start und Ende aus Variablen kommen:
start=3
end=8
for i in $(seq "$start" "$end"); do
echo "$i"
done
Das ist in der Praxis oft genau das, was ich brauche. Kein Hardcoding. Keine Magie. Nur ein klarer Ablauf.
Nutze seq, wenn:
- Start- und Endwerte variabel sind
- du mit Schrittweiten arbeiten willst
- du Zahlen dynamisch generieren musst
- Lesbarkeit wichtiger ist als maximale Performance
Wann ich bash for i in seq nicht verwende
Ich verwende es nicht blind. Wenn ich mit sehr großen Datenmengen arbeite, denke ich zuerst an Effizienz. Dann ist eine Shell-Schleife oft nicht die beste Lösung.
Außerdem kann es Probleme geben, wenn du auf Portabilität achtest. Nicht jedes System behandelt seq gleich oder hat es überhaupt standardmäßig in der gleichen Form verfügbar.
Für mehr Hintergrund zur Bash-Syntax ist die offizielle GNU-Bash-Dokumentation hilfreich: GNU Bash Reference Manual.
Praktische Beispiele für bash for i in seq
1. Mehrere Dateien anlegen
for i in $(seq 1 5); do
touch "datei-$i.txt"
done
2. Einen Befehl mehrfach testen
for i in $(seq 1 3); do
curl -I https://example.com
done
3. Verzeichnisse erstellen
for i in $(seq 1 10); do
mkdir "projekt-$i"
done
4. Mit Schrittweite arbeiten
for i in $(seq 10 10 50); do
echo "Schritt: $i"
done
Ich mag solche Beispiele, weil sie sofort Nutzen bringen. Du musst nichts abstrahieren. Du kannst sie direkt in dein Terminal kopieren und anpassen.
Die häufigsten Fehler bei bash for i in seq
Hier passieren die meisten Probleme. Ich halte es einfach.
- Falsche Reihenfolge der Zahlen: Bei abwärts zählenden Schleifen muss die Schrittweite negativ sein.
- Unquoted Variablen: Immer sauber mit Quotes arbeiten, wenn Variablen im Spiel sind.
- Zu viel Komplexität: Wenn die Schleife unlesbar wird, ist sie schlecht.
- Falscher Einsatz von seq: Für simple feste Bereiche ist
{1..10}oft besser.
Meine kurze Entscheidungshilfe
Wenn ich eine Zahlenreihe in Bash brauche, frage ich mich nur drei Dinge:
- Ist der Bereich fest oder dynamisch?
- Brauche ich eine Schrittweite?
- Soll das Skript maximal lesbar sein?
Wenn die Antwort auf die erste oder zweite Frage „ja“ ist, ist bash for i in seq meistens ein solider Move. Wenn alles fix und simpel ist, nehme ich oft die Brace Expansion.
Mehr über seq findest du in der offiziellen GNU Coreutils Doku: GNU Coreutils: seq invocation.
Fazit zu bash for i in seq
bash for i in seq ist kein Trick. Es ist ein Werkzeug. Und gute Tools machen Dinge schneller, klarer und zuverlässiger. Genau deshalb nutze ich es, wenn ich Zahlen in Bash iterieren will.
Mein Rat: Lern die einfache Version, versteh die Schrittweite, und entscheide dann bewusst zwischen seq und Brace Expansion. So schreibst du bessere Shell-Skripte, ohne unnötig Zeit zu verlieren.
Wenn du bash for i in seq einmal sauber verstanden hast, baust du Shell-Automatisierung viel schneller und mit weniger Fehlern.