Como bien lo dije en el post pasado , muchas de las estructuras que podemos manejar en la programación bash son muy similares a las que utilizamos en otros lenguajes, como por ejemplo, la estructura for actúa de forma muy similar a como lo hace un for en python.
El for en bash itera una lista, de modo que para poder crear un for que itere del 0 al 9 tendríamos que crear una lista que tuviera esta cantidad de elementos, para ello podemos usar la instrucción "seq n m", donde n es el numero inicial y m el numero final.
Un ejemplo para ser mas claros. Bien, sabemos que for itera una lista, así que probemos:
for i in "uno" "dos" "tres"; do
echo $i
done
Y obtenemos como salida:
uno
dos
tres
Ahora intentemos crear un for al estilo C (o java) de la forma "for(int i=0;i<10;i++){}":
for i in `seq 0 9`; do
echo $i
done
Y esta es su salida:
0
1
2
3
4
5
6
7
8
9
En cambio, el uso del
while
sigue el patrón de repetirse mientras se cumpla una condición:
EN="s"
while [ $EN != "S" ]; do
read -p "Escribe S para salir: " EN
done
En el anterior ejemplo podemos ver la sencilla sintaxis que tiene el while ; el ciclo no terminara hasta que el usuario escriba la letra "S" (debe ser mayúscula).
Ejecutándolo:Escribe S para salir: a Escribe S para salir: b Escribe S para salir: c Escribe S para salir: s Escribe S para salir: S
En el caso de la sentencia Until , actuara de forma similar al while, se repetirá hasta que la condición se cumpla:
EN="S"
until [ $EN != "S" ]; do
read -p "Escribe S para salir: " EN
done
De modo que si siempre tecleo la letra "S" (sin comillas), el ciclo continuara, en cambio, al introducir algo distinto a "S" terminara.
Escribe S para salir: S Escribe S para salir: S Escribe S para salir: 7
Jorge Hernandez :: http://jorgeluis.com.mx