next up previous contents
Next: Sobre este documento... Up: Ciclos Previous: for   Índice General

while y until

La sintáxis del while es la siguiente:

while condicion
do
        accion_1
        accion_2
        ...
done

En este caso, las acciones se efectúan hasta que la condición se haga falsa.

La sintáxis para el until es igual, pero en este caso la acción se repite mientras la condición sea falsa:

until condicion
do
        accion_1
        accion_2
        ...
done

Construiremos el mismo ejemplo utilizando ambas formas. Se trata de un pequeño programa que nos avisa cuando un usuario entra en sesión. Además nos aseguraremos de que se le pase el argumento, avisando con un mensaje amigable cuando no sea así:

case $# in
    0) echo "Baboso! falta el nombre del usuario" ; exit 1 ;;
    1) usuario = $1 ;;
esac

while sleep 60
do
        who | grep $usuario
done

sleep es un programa que no hace nada durante el tiempo en segundos que se le indica. En este ejemplo, sleep duerme durante un minuto entre cada vez que el pregunta si el usuario está en sesión. Ahora con until:

case $# in
    0) echo "Baboso! falta el nombre del usuario" ; exit 1 ;;
    1) usuario = $1 ;;
esac

until who | grep $usuario
do
    sleep 60
done

Ejercicio: Puede decir cuál es la diferencia primordial entre ambas versiones?



Ismael Olea 2001-04-21