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?