Archiv der Kategorie: Schleifen

while-Schleife

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-Schleife

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