La sintáxis es:
for variable in lista_de_valores
do
accion_1
accion_2
...
done
donde variable es una variable que toma cada uno de los valores en la lista dentro del cuerpo del ciclo. Por ejemplo:
for a in 1 2 3 lola lulu
do
echo "cucamonga $i"
done
cucamonga 1
cucamonga 2
cucamonga 3
cucamonga lola
cucamonga lulu
Una aplicación típica es efecctuar una acción sobre una lista construída dinámicamente. Por ejemplo:
for i in `who | cut -d ' ' -f 1 | sort | uniq | tr '\n' ' '`
do
write $1 << FIN
Ya llegue!!!!
FIN
done
Con este pequeño programa le avisamos a todos los usuarios
del sistema que ya entramos en sesión. Aclaremos: who nos dice
quién está en sesión en ese momento, que además puede estar en varias
sesiones simultáneas; cut nos da determinadas columnas de una
columna o bien, como en éste caso de determinados campos utilizando
las opciones -d para indicar el delimitador y -f para
indicar que campo; con sort y uniq los ordenamos y
unificamos como en el caso del corrector ortográfico; con tr
cambiamos de uno por línea a todos en la misma línea (a la inversa que
en el corrector) y con write enviamos el mensaje a la terminal
del usuario.
La forma << delimitador nos es completamente nueva. Con
ella le decimos al shell que copie como entrada todo lo que se
encuentre hasta que la palabra que utilizamos como delimitador
aparezca por si sola en una línea.