for
Der Shell-Befehl for bewirkt eine Schleife, welche die Anzahl auszuführender Schleifendurchläufe einer am Anfang stehenden Wortliste entnimmt.
Syntax
for Name in Wortliste do Befehlsliste done
Verwendung
for i in 1 2 3 4 5 do echo "Das ist Nr. ${i}" done
Die mit dem Wert 1 initialisierte Variable i wird mit jedem Schleifendurchlauf um eins erhöht, solange ihr Wert kleiner oder gleich zehn bleibt.
for ((i=1; ${i}<=10; i++)) do echo ${i} done
Hinter dem Schlüsselwort "for" steht der Name der Variablen, der ein Element zugeweisen werden soll. Hinter "in" steht die Liste der zu durchlaufenden Elemente, durch Leerzeichen bzw. Tabulatoren oder Zeilenumbrüche getrennt.
for d in $(ls -1 /etc) do echo ${d} done
Verarbeitung einer Liste von Dateien mit Leerzeichen im Namen (z. B. "Guter Film 1.mp4").
$ SAVEIFS=$IFS $ IFS=$(echo -en "\n\b") $ for datei in *mp4 do #echo "${datei}" ffmpeg -i "${datei}" "${datei}"-NEU.mp4 done $ IFS=$SAVEIFS
Folgende Schleife ordnet der Reihe nach Variable die Argumente zu mit denen das Shellskript aufgerufen wurde (also "$1" bis "$n") und führt daraufhin Befehlsliste1 mit Variable als Schleifenparameter aus. Die Anzahl Schleifendurchläufe entsprcht hier der Anzahl übergebener Parameter ("$#").
for Variable do Befehlsliste1 done
Beispiel 1
# vi usersearch #!/bin/sh # i ist hier der Name der Variablen, die nacheinander # den Wert der Parameter $1 bis $n übernimmt for i do grep $i /etc/passwd done # ./usersearch dummy ftp dummy:x:500:100:dummy dummy:/home/dummy:/bin/bash ftp:x:40:2:FTP account:/usr/local/ftp:/bin/bash
Folgende Schleife ordnet der Reihe nach Variable die Elemente von Liste zu und führt daraufhin Befehlsliste1 mit Variable als Schleifenparameter aus. Die Anzahl Schleifendurchläufe entspricht also der Anzahl Elemente von Liste.
for Variable in Liste do Befehlsliste1 done
Beispiel 2
Verschieben aller Dateien und Verzeichnisse im aktuellen Verzeichnis nach "~/bin" und gleichzeitiges Anhängen der Endung ".org" an jeden Datei- bzw. Verzeichnisnamen.
$ for i in *; do mv $i ~/bin/$i.org; done
Beispiel 3
Folgende Schleife macht nicht viel anderes als das, was der Befehl "ls /etc/*.conf" ausgeben würde. Der Stern wird durch die Shell zu den einzelnen mit ".conf" endenden Dateinamen expandiert. Dann läuft die Schleife darüber, speichert den Namen in der Laufvariablen und gibt ihn mittels echo aus.
$ for i in /etc/*.conf; do echo $i; done
Beispiel 4
# vi varisvar #!/bin/sh for var in ABC BCD CDE do echo "var is $var" done # ./varisvar var is ABC var is BCD var is CDE
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Wikipedia | ger | For-Schleifewbm | Enzyklopädischer Artikel |