# Schleifen

## for

Die for-Schleife arbeitet auf einer Liste, wobei eine Schleifenvariable der Reihe nach mit jedem Element der Liste belegt wird.

`for Variable [in Liste]; do <Kommando(s)> done`

Fehlt die Angabe der Liste, wird versucht, die Schleifenvariable mit einer Liste aus der Umgebung zu verbinden. In einem Shellprogramm ist dies z.B. die Liste der übergebenen Kommandozeilenparameter. Mit dem Kommando set kann auch explizit eine Liste erzeugt werden.

Beispiele

`user@sonne> for i in a b c; do echo $i; done a b c user@sonne> for i in *.tex; do cp $i $i~; done user@sonne> for i in $(find / -name "*.tex"); > do echo $i; cp $i $i~; done user@sonne> set 1 2 3 4 user@sonne> for i do echo $i; done 1 2 3 4`

## while

while führt die Schleife so lange aus, bis die Bedingung nicht mehr erfüllt ist.

`while <Bedingung>; do <Kommando(s)> done`

Beispiel

`user@sonne> i=2;z=1; while [ $z -le 5 ]; do > echo $z $i; i=$[$i*$i]; z=$[$z+1]; done 1 2 2 4 3 16 4 256 5 65536`

## until

Im Unterschied zu while-Schleifen wird bei until die Bedingung negiert formuliert.

`until <Bedingung>; do <Kommando(s)> done`

Beispiele

`user@sonne> i=1; until [ $i -gt 5 ]; do echo $i; i=$[$i+1]; > done 1 2 3 4 5 user@sonne> i=2;z=1; until [ $z -gt 5 ]; do > echo $z $i; i=$[$i*$i]; z=$[$z+1]; done 1 2 2 4 3 16 4 256 5 65536`