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