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.