Curso de Linux N20. Programación en Bash 007. while; until; ciclos infinitos; continue y break con while y until.
Cordiales Saludos
El ciclo while lo podemos trabajar para resolver ejercicios donde necesitemos realizar iteraciones. Podemos usarlo cuando sabemos el número de iteraciones así como si lo desconociéramos, ya que depende de una condición para ejecutarse. Si la condición no se ejecuta se detiene o utilizando un break dependiendo de nuestro script.
El while está enmarcado dentro de las Estructuras Repetitivas, como lo escribí a continuación en mi curso de python para principiantes:
El ciclo while permite realizar iteraciones mientras se cumpla la condición, es decir mientras sea verdadera. Debemos hacer una indentación o sangría dentro del cuerpo del ciclo while igual que lo hicimos con el ciclo for. Esta es la forma más general de explicar el while. OJO: Si la condición nunca se hace falsa, se produce un ciclo infinito.La condición puede ser más compleja (con or, and y not). Dentro del bloque de instrucciones debe haber una instrucción que en algún momento sirva para detener el ciclo. Fuente
Usaremos while cuando desconocemos el número de iteraciones. En cambio usaremos for cuando ya conocemos el número de iteraciones. Se destaca que tanto el ciclo for y while pueden ser usados para resolver un mismo problema, dependerá de nosotros como atacar el problema. Fuente
while
En el siguiente ejercicio se muestra la estructura básica de un Ciclo while, mientras se cumpla una condición, ejecuta el ciclo, en este caso visualizamos "Hola" y el contador. En este caso se utilizó un contador para controlar el número de veces que se realizará el ciclo.
El while siempre se ejecutará mientra la condición sea verdadera. Imaginate la evaluación del condicional: Contador es menor que 5?, Si (verdadera) entonce ejecuta.
Ejecución del código
$ bash script_50.sh
Hola
0
Hola
1
Hola
2
Hola
3
Hola
4
Ciclo while: Uso de Banderas
En esta ocasión utilizamos una bandera para finalizar el ciclo. En el ejercicio anterior utilizamos un contador. Funciona el ciclo mientras $flag sea falso, cuando cambia a verdadero, el ciclo se detiene.
Ejecución del Código
$ bash script_51.sh
false
Hola
Hola1
Hola2
true
Ciclo while: Uso de contador y acumulador
Al igual que con el ciclo for podemos usar los contadores y acumuladores. En este caso realizaremos un ejercicio que consiste en realizar la sumatoria de los 5 primeros números naturales. El contador lo utilizaremos para controlar el número de repeticiones y el acumulador (sum) para realizar la sumatoria.
Ejecución del Código
$ bash script_52.sh
La suma de los primeros cinco numeros naturales es: 15
Probemos:
$ echo 1+2+3+4+5 | bc
15
Otra forma de probar el resultado:
Aprovechemos de mostrar otra forma:
Escribamos en nuestra terminal
$ suma=0;for i in {1..5};do (( suma=suma+$i )); done; echo $suma
15
$
Importante
- Podemos colocar en una sola linea el for, while y el if
- Cualquiera de las instrucciones que realizamos en bash la podemos escribir directamente en nuestra terminal. Y todos los comandos de linux que usamos en nuestra terminal los podemos usar dentro de nuestros script de bash.
Ciclo until
El ciclo until se ejecutara siempre que el condicional sea falso.
El until siempre se ejecutará mientra la condición sea falsa. Imaginate la evaluación del condicional: Contador es mayor que 5, No (Falso) entonce ejecuta.
Con un poco de práctica puedes dominarlo, muy bien.
Ejecución del código
$ bash script_53.sh
La suma de los primeros cinco numeros naturales es: 15
Ciclos Infinitos
Los ciclos infinitos los he explicado toda la vida bajo dos premisas:
- Cuando estamos comenzando en el mundo de la programación y realizamos nuestros primeros ciclos ocurre que sin querer los ciclos nunca terminan, aunque esto a veces nos pasa a los más experimentados.
- Los ciclos infinitos los usamos, porque los requerimos para determinado proceso.
Entonces en el primer caso se da el ciclo infinito porque no hay una condición que lo interrumpa o no existe un break. En el segundo caso bash nos da una sintaxis para ejecutarlo, con la salvedad que para salir o interrumpir el ciclo, debemos realizar la combinación de los teclas: Ctrl + C.
Ciclo infinito con while
Ejecución del código
Ctrl + c, para salir
Son 76913 ciclos
Ctrl + c, para salir
Son 76914 ciclos
Ctrl + c, para salir
^C
Ciclo infinito con while (2)
Ejecución del código
Ctrl + c, para salir
Son 44275 ciclos
Ctrl + c, para salir
Son 44276 ciclos
Ctrl + c, para salir
Son 44277 ciclos
Ctrl + c, para salir
Son 44278 ciclos
Ctrl + c, para salir
^C
Ciclo infinito con until
Ejecución del código
Ctrl + c, para salir
Son 37941 ciclos
Ctrl + c, para salir
Son 37942 ciclos
Ctrl + c, para salir
Son 37943 ciclos
Ctrl + c, para salir
^C
Ciclo infinito con for
Ejecución del código
Ctrl + c, para salir
Son 90517 ciclos
Ctrl + c, para salir
Son 90518 ciclos
Ctrl + c, para salir
Son 90519 ciclos
Ctrl + c, para salir
^C
Ciclo while: continue y break
Ya habíamos visto en la publicación anterior el continue y el Break, Aquí cuando c toma el valor de 2, continua, es como que saltara el proceso (ciclo) no lo ejecuta es decir no muestra el numero 2, en cuanto al break se ejecutará cuando c sea igual a 11, y se interrumpe el ciclo.
Ejecución del código
$ bash script_58.sh
Valor contador 1
Valor contador 3
Valor contador 4
Valor contador 5
Valor contador 6
Valor contador 7
Valor contador 8
Valor contador 9
Valor contador 10
Ciclo until: continue y break
Aquí nos arroja el mismo resultado del ejercicio anterior pero utilizando until.
Ejecución del código
$ bash script_59.sh
Valor contador 1
Valor contador 3
Valor contador 4
Valor contador 5
Valor contador 6
Valor contador 7
Valor contador 8
Valor contador 9
Valor contador 10
Hasta aquí nuestra publicación. Todos estos ejercicios los puedes modificar para obtener el mismo resultado cambiando el condicional, inténtalo!
IMPORTANTE: Los comando vistos aquí y en próximas publicaciones están limitados para mostrarlos y conceptualizarlos para nuestro quehacer diario. Cada comando tiene muchas opciones que debemos investigar por nuestra propia cuenta cuando estemos trabajando con ellos. Aprovechemos el internet para conocer en profundidad el comando que estemos estudiando y en primer orden no olvidemos lo potente y todo lo que nos brinda el comando man para conocer la sintaxis y todo lo relacionado con todos los comandos que tenemos en nuestro sistema sin recurrir a internet.
Todos a practicar, incluyéndome! Nos vemos en la próxima publicación...
Estos ejercicio y los anteriores los puedes encontrar en el repositorio del curso: https://gitlab.com/btcsiraquino/hp_bash_ejercicios
Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!
Please consider delegating to the @stemsocial account (85% of the curation rewards are returned).
You may also include @stemsocial as a beneficiary of the rewards of this post to get a stronger support.