This blog post has been published on 2010-01-31 and may be out of date.
Eine Endlosschleife erzeugen wir nun, indem wir einfach eine Bedingung wählen, die immer erfüllt ist… dies könnte man z.B. wie folgt machen:
while true; do date; sleep 5; done
Dies kann man jedoch auch sehr viel einfacher haben und zwar mit “watch”:
watch -n5 "date"
Wenn die Schleife jedoch noch einigen Durchläufen beendet werden soll, kann man dies z.B. so machen:
for i in`seq 1 50` ; do echo $i ; date ; sleep 5 ; done
Hier noch ein paar Beispiele:
#!/bin/sh
ANZAHL=0
echo "until-Loop"
# gt = groesser
until [ ${ANZAHL} -gt 10 ] ; do
echo ${ANZAHL}
ANZAHL=`expr ${ANZAHL} + 1`
done
# ------------------------------------
ANZAHL=0
echo "while-Loop"
# gt = kleiner/gleich
while [ ${ANZAHL} -le 10 ]
do
echo ${ANZAHL}
ANZAHL=`expr ${ANZAHL} + 1`
done
# ------------------------------------
echo "For-Loop"
# seq = sequenz
for i in `seq 0 10`
do
echo $i
done
exit
# ------------------------------------
Zum Schluss noch ein Beispiel aus der Praxis:
for I in $(ps aux|grep "apache"| awk {'print $2'}); do kill -9 $I; done
vielleicht auf den ersten Blick ein wenig konfus, aus den zweiten Blick erkennt man jedoch, dass mittels ps nach “apache” gesucht wird, die PID-Nunner per awk herausgenommen und diese Programme dann getötet werden.