Curso de Linux N20. Programación en Bash 007. while; until; ciclos infinitos; continue y break con while y until.

By rafaelaquino on 10/15/2023

Cordiales Saludos

![20_portada.png](Image from post)
![banner_bash.png](Image from post)

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.

![00-20_50.png](Image from post)
Ejecución del código ~~~ $ bash script_50.sh Hola 0 Hola 1 Hola 2 Hola 3 Hola 4 ~~~
![separador_bash.png](Image from post)
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.

![00-20_51.png](Image from post)
Ejecución del Código ~~~ $ bash script_51.sh false Hola Hola1 Hola2 true ~~~
![separador_bash.png](Image from post)
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.

![00-20_52.png](Image from post)
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:

![00-20_calculadora.png](Image from post)

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
  1. Podemos colocar en una sola linea el for, while y el if
  2. 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.
![separador_bash.png](Image from post)
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.

![00-20_53.png](Image from post)
Ejecución del código ~~~ $ bash script_53.sh La suma de los primeros cinco numeros naturales es: 15 ~~~
![separador_bash.png](Image from post)
Ciclos Infinitos

Los ciclos infinitos los he explicado toda la vida bajo dos premisas:

  1. 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.
  2. 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
![00-20_54.png](Image from post)
Ejecución del código ~~~ Ctrl + c, para salir Son 76913 ciclos Ctrl + c, para salir Son 76914 ciclos Ctrl + c, para salir ^C ~~~
![separador_bash.png](Image from post)
Ciclo infinito con while (2)
![00-20_55.png](Image from post)
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 ~~~
![separador_bash.png](Image from post)
Ciclo infinito con until
![00-20_56.png](Image from post)
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 ~~~
![separador_bash.png](Image from post)
Ciclo infinito con for
![00-20_57.png](Image from post)
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 ~~~
![separador_bash.png](Image from post)
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.

![00-20_58.png](Image from post)

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 
![separador_bash.png](Image from post)
Ciclo until: continue y break

Aquí nos arroja el mismo resultado del ejercicio anterior pero utilizando until.

![00-20_59.png](Image from post)
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 ~~~
![separador_bash.png](Image from post)

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.

![bannerfundamentos.png](Image from post)

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


Mi Twitter

Comments (1)

stemsocial's avatar @stemsocial 10/16/2023

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.