Unterbricht eine Schleife (while, until, for):
while : ; do read a [ $a == "x" ] && break done
Unterbricht eine Schleife (while, until, for):
while : ; do read a [ $a == "x" ] && break done
until Bedingung ; do # Befehle done
while Bedingung ; do # Befehle done
Beispiele:
Endlosschleife:
while : ; do # auszuführender Quelltext # Schleife wird mit break beendet done
While-Schleife mit find (Variante mit for (siehe for-Schleife) ist ca. 30% schneller):
find /home -type f | while read; do echo ${REPLY} done
alle *.jpg rekursiv in allen Unterordnern finden (hierzu gibt es auch eine elegante Variante mit for, die jedoch nur in der Bash funktioniert):
while read -rd "" i; do echo "$i" done < <(find /home/user/unterordner/ -iname "*.jpg" -print0)
Datei zeilenweise einlesen (Eine Variante mit File-Descriptor gibt es hier):
while read LINE; do echo ${LINE[1]} done < infile.txt
Fehlermeldung „Error:“ in einer Datei suchen:
while [ $error \> 0 ] ; do echo Es sind Fehler aufgetreten! error=`grep -c Error: Datei.txt` done
for x [ in Liste ] ; do # Befehle done
continue [n]: springt zum Schleifenanfang und übergeht dabei n Duchläufe
break [n]: verlässt n Schleifenebenen
Beispiele:
Script um alle Bilder in einem Verzeichnis zu verkleinern:
for file in * ; do convert -scale 100x $file klein_$file done
Dieses Script wandelt alle PDF-Dateien im Verzeichnis in Postscript-Dateien um:
for i in *.pdf; do pdf2ps $i done
Zählerschleife:
for ((i=1; i<=100; i++)) { echo $i }
For-Schleife mit find (schnell):
for f in $(find /home -type f); do echo ${f} done
Alle *.jpg finden und bearbeiten (funktioniert nur in der Bash):
shopt -s globstar nocaseglob for i in /home/user/unterordner/**/*.jpg; do echo $i done