Bash-Programmierung: Schleifen

closeDieser Beitrag wurde vor mehr als drei Monaten veröffentlicht. Bedenke bitte, dass die hier angebotene Information nicht mehr aktuell und gültig sein könnte. Informiere dich daher bitte auch an anderer Stelle über dieses Thema. Sollten sich neue Informationen ergeben haben, so kannst du mich auch gerne auf diese über einen Kommentar hinweisen. Vielen Dank!

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.

Veröffentlicht von

voku

Lars Moelleken | Ich bin root, ich darf das!