hi,
ich möchte folgendes in meiner While Schleife ausdrücken
ANZ=3
While [ $ANZ > 0 ]
do
echo $ANZ
ANZ=' expr $ANZ -1`
done
kennt jemand die richtige Syntax für dieses Problem, denn so läuft das leider nicht.
vielen dank im vorraus!
Syntax While-Schleife in shell script
Ich gebe mal zwei Varianten zum besten.
Erst mal die sh-Variante. Sie ist immer noch am portablesten.
Performanter und m.E. leichter lesbar ist die bash-Variante (die so auch in der ksh funktionieren müsste):
Jochen
Erst mal die sh-Variante. Sie ist immer noch am portablesten.
Code: Select all
#!/bin/sh
ANZ=3
while test $ANZ -gt 0
do
echo $ANZ
ANZ=`expr $ANZ - 1`
done
Code: Select all
#!/bin/bash
ANZ=3
while (( ANZ > 0 ))
do
echo $ANZ
(( ANZ++ )) # Oder (( ANZ = ANZ + 1 )), wenn man ++ nicht mag
done
Die grösste Lüge der EDV? "Mal eben..."
Richtig, die eckige Klammer auf "[" entspricht dem Kommando test. Allerdings verlangt das Kommando unter dem Namen "[", dass als letztes Argument ein "]" folgt. Die while-Schleife reagiert wie auch das if-Statement auf den Exitcode des folgenden Kommandos, daher muss man nicht unbedingt mit irgendweochen expliziten Vergleichen mittels test nach while arbeiten:
Die while-Schleife läuft solange, wie grep "root" im Output von who findet. Sollte "root" nicht zu finden sein, ist der Exitcode von grep gleich 1 und die Ausführung wird nach der while-Schleife fortgesetzt.
Jochen
Code: Select all
#!/bin/sh
while who | grep -q root ; do
sleep 60
done
echo "root hat sich abgemeldet!"
Jochen
Die grösste Lüge der EDV? "Mal eben..."