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

    Programación en Bash Linux V: Estructuras [case]Programación en Bash Linux III: Estructuras [if..then..else]