Index→Deutsch→Technik→GNU und Linux→Shell Scripting→Schleifen
In Shell gibt es mehrere Arten von Schleifen. Die while
und die for
und die foreach
-Schleife. Die man-Pages dazu kann man mit man n while
, man n for
und man n foreach
öffnen.
while
wiederholt solange, bis der Schleifenkopf 0 zurück gibt. Im Gegensatz dazu Iteriert for
über eine durch Leerzeichen getrennte Liste an Elementen.
ls | while read -r x; do echo "- $x"; done
while read
wird benutzt um Zeilenweise den Output von ls
zu lesen und nicht nach Leerzeichen zu trennenread
sollte man -r
nutzen, damit Backslashes (\
) richtig eingelesen werdeny=0 ls | while read -r x; do y=10 done echo $y
y=0 ls | while read -r x; do y=$(( y + 1 )) echo $y done echo $y
y=0 while read -r x; do y=$(( y + 1 )) echo $y done < <(ls) echo $y
for x in *; do echo "- $x"; done
for x in $(ls); do echo "- $x"; done
for
-Schleife nach Leerzeichen trennen und somit Dateinamen mit Leerzeichen trennen.for x in $(…)
Syntax sollte in diesem Fall nicht genutzt werden.for x in $(factor 8); do echo $x; done
for file in *.mp3; do echo "mp3 file: $file"; done
.mp3
Dateien Dateien im Ordnerfor file in $(seq 0 10 100); do echo $file; done
for file in {0..100..10}; do echo $file; done
seq 0 10 100