Guía para principiantes de Bash while Loops
Escribir código de calidad en sí es un truco y cuando debe ejecutar varias veces específicas, no desea escribir una declaración varias veces.
Entonces, ¿cómo resuelve este problema? Utilice bucles en la programación, que le permiten ejecutar una tarea específica según la condición dada.
Existen varios tipos de bucles y uno de ellos es los bucles while. Así, en este tutorial, le explicaré cómo puede utilizar el bucle while a bash con un conjunto de ejemplos prácticos.
¿Cómo funciona el bucle while a bash?
Para entender el funcionamiento del bucle while, primero debe entenderse la sintaxis. Así pues, aquí tiene una sintaxis básica del bucle while:
while [ condition ]
do
command1
command2
...
commandN
done
Ahora, desglosamos cada línea para entender cómo funciona:
while
: la palabra clave que inicia el bucle while.[condition]
: es la parte más importante del bucle. La declaración de condición. La condición se relaciona principalmente con una variable definida y el bucle sólo se ejecuta si la condición es cierta.do
: la palabra clave que inicia el cuerpo del bucle.command1, command2,..., comandN
: n número de órdenes que se ejecutarán hasta que la condición sea cierta.done
: marca el final del cuerpo del bucle.
¿Suena complicado? Permítanme que se lo simplificie.
Supongamos que desea imprimir algo 5 veces, así que lo que puede hacer es definir una variable e inicializar su valor a 1 (supongamos que la variable es a).
Así que lo que puede hacer es crear una condición de que el bucle se iterará hasta el valor de la a
La variable es 5 y utiliza un contador dentro del cuerpo del bucle que aumentará el valor de a
en cada iteración.
Así es cómo funcionará:
La condición es: El valor de a
es menor o igual a 5. Inicialmente, el valor de a
se definió como 1, por lo que la condición es cierta y el bucle imprimirá la instrucción. Justo después de esto, hay un contador que aumentará el valor de a
por 1, por lo que ahora el valor de a=2.
De nuevo, comprobará la condición, y todavía será cierta, ya que el valor actual de a (que es 2) todavía es menor o igual a 5, por lo que el bucle se iterará, se ejecutará la instrucción de impresión y el contador. aumentará el valor de a en 1 resultando el valor de la a
acontece 3.
El bucle funcionará hasta que siga ejecutando la instrucción de impresión hasta que el valor de a llegue a 5. Después de ejecutar la instrucción de impresión por quinta vez, el contador aumentará el valor de aa 6.
Así, cuando se compruebe la condición para iniciar el bucle, se comprobará, será falso y el bucle se terminará.
Ahora, echemos un vistazo a algunos ejemplos del bucle while a bash.
Véase también: 8 PowerToys imprescindibles para aumentar su productividad de Windows
Ejemplos de un bucle while a bash
En esta sección, compartiré 4 ejemplos sencillos que muestran lo fácil que es utilizar el bucle while a bash. Empezará por las más fáciles y aumentará la complejidad poco a poco (sólo un poco, nada que te asuste).
1. Imprime n números
De lejos, ésta es la manera más fácil de entender el funcionamiento de un bucle while a bash. Primero, dejadme compartir el código y después llegaré a la parte de explicación:
#!/bin/bash
number=1
while [ $number -le 10 ]
do
echo $number
((number++))
done
El código anterior imprimirá números del 1 al 10. Echemos un vistazo a cómo se hace.
Aquí,
!/bin/bash
: es un shebang que indica al sistema que utilice el shell bash para ejecutar el script.number=1
: es una variable llamada a númeroy se le asignó 1 como valor inicial.[ $number -le 10 ]
: es una condición para comprobar si el valor de lanumber
variable es menor o igual a 10.echo $number
: imprimirá el valor de lanumber
variable.((number++))
: aumentará el valor de lanumber
variable por una en cada iteración.
Cuando ejecute el script anterior, puede esperar la siguiente salida:
2. Uso de la instrucción break
La instrucción break se utiliza para salir en breve del bucle while cuando coincide una determinada condición. Aquí está un bucle while sencillo con una declaración break:
#!/bin/bash
number=1
while [ $number -le 10 ]
do
echo "Number: $number"
if [ $number -eq 7 ]; then
echo "Reached number 7. Exiting loop..."
break
fi
((number++))
done
echo "Loop exited."
En el script anterior, la instrucción break toma un salida anticipada una vez utiliza la instrucción echo the 7a vez. Echemos un vistazo a cómo funciona.
number=1
: aquí, la variablenumber
se inicializa a 1.while [ $number -le 10 ]
: el bucle while ejecutará el cuerpo del bucle hasta el valor de lanumber
variable es menor o igual a 10.echo "Number: $number"
: una instrucción de impresión para imprimir el valor de lanumber
variable.if [ $number -eq 7 ]; then
: si el valor de lanumber
variable es igual a 7 y, a continuación, ejecute la siguiente instrucción.echo "Reached number 7. Exiting loop…"
: si el valor de lanumber
variable es igual a 7, entonces imprimirá "Se llegó al número 7. Se está saliendo del bucle...".break
: Una vez después de imprimir el mensaje que se encuentra dentro de la instrucción if, romperá el bucle while.fi
: se utiliza para terminar el bloque if.((number++))
: se utiliza para aumentar el valor de lanumber
variable en 1 en cada interacción.done
: declaración de cierre del bucle while.echo "Loop exited"
: Imprimir "Loop exited" al final de la salida.
¿Parece demasiado complejo? Déjame contar.
El bucle tenía la condición de que se iteraría hasta el valor del number
La variable es menor o igual a 10, por lo que técnicamente debería ejecutar el cuerpo del bucle 10 veces.
Pero espera ✋.
Hay una instrucción if en el cuerpo del bucle para comprobar si el valor de number
variable es 7 o no. Una vez que el valor de la variable aumenta a 7, la condición de la instrucción if cambia a verdadera y ejecuta la break
declaración para salir del bucle.
Aquí tiene la salida del script:
3. Utilizando la instrucción continue
La instrucción continue se utiliza para saltar la iteración actual y pasar a la siguiente iteración. En los scripts bash, a menudo se combina con el bucle while para saltar determinadas iteraciones.
Aquí hay un bucle while sencillo que muestra cómo utilizar la instrucción continúe para saltar una iteración específica:
#!/bin/bash
number=1
while [ $number -le 10 ]
do
if [ $number -eq 5 ]; then
echo "Skipping number 5..."
((number++))
continue
fi
echo "Number: $number"
((number++))
done
echo "Loop exited."
El bucle while anterior saltará la 5a iteración e imprimirá el mensaje "Se omite el número 5..." en lugar de imprimir el valor del number
variable. Así que echemos un vistazo a cómo funciona:
number=1
: elnumber
variable inicializada en 1.while [ $number -le 10 ]
: un bucle while que iterará el cuerpo del bucle hasta el valor delnumber
variable será menor o igual a 10.if [ $number -eq 5 ]
: es la instrucción if que verifica el valor de la variable y una vez cumpla la condición, ejecutará el código dentro de la instrucción if.echo "Skipping number 5…"
: una declaración de impresión que sugiere que la instrucción if está a punto de saltarse la 5ª iteración y, en su lugar, imprimirá "Omitiendo el número 5...".((number++))
: aumenta el contador dentro de la instrucción yf que aumentará el valor de la variable (actualmente 5) a 6.continue
: pasa a la siguiente iteración.echo "Number: $number"
: imprime el valor de lanumber
variable.((number++))
: aumenta elnumber
variable por 1.echo "Loop exited."
: una declaración de impresión que sugiere el final del bucle.
Si observa el bucle, he utilizado el incremento (número++) dos veces y aquí es donde pasa la verdadera magia.
Hay un bucle while que se supone que imprime el valor de la number
variable 10 veces. Pero quería saltarme la 5a iteración, así que lo que hice es utilizar la declaración if antes de la declaración echo del bucle while que se encarga de imprimir el valor de una variable.
Lo que ocurre es que el bucle while comienza con la instrucción if y después hay una parte de eco. Esto significa que la variable se pasa primero a través de la instrucción if, por lo que cuando la condición de la instrucción if es cierta, el valor se cambia antes de pasar a la parte de eco (el segundo eco del código) del bucle while.
Cuando el valor de la variable aumenta a 5, primero se comprobará con la declaración if y dado que el valor es 5, la condición para la declaración if es cierta y se incrementará a 6. Ahora, el valor de la number
La variable es 6 y pasa a la segunda instrucción de eco.
Así es como omita una o más iteraciones con la instrucción continúe. Si tuviera que ejecutar el script mostrado, aquí tiene la salida esperada:
4. Lee el archivo línea por línea
Puede que éste no sea el ejemplo más práctico de lectura de archivos, pero sin duda una manera fantástica de entender el funcionamiento del bucle while, ya que implica el uso del comando read.
Primero, déjeme compartir el código:
#!/bin/bash
file="my_file.txt"
while read -r line; do
echo "$line"
done < "$file"
El bucle anterior leerá el contenido del archivo my_file.txt
archivo línea por línea. Así es cómo funciona:
file="my_file.txt"
: el nombre del archivomy_file.txt
está asignado alfile
variable.while read -r line
: aquí, el bucle while se iterará hasta que el comando de lectura lee el archivo línea por línea y almacena todas las líneas en laline
variable (una a la vez).
El-r
La bandera se utiliza para evitar barras invertidas (\)
ser interpretados como caracteres de escape dentro de la línea.echo "$line"
: imprime cada línea almacenada dentro delline
variable.done < "$file"
: redirige los datos del archivo almacenados dentro del archivofile
variable continuamente.
En términos sencillos, almacena líneas una por una dentro del line
variable y los imprime uno por uno hasta que no quede nada por leer con el orden de lectura y el bucle termina allí.
Aquí tiene la salida del script anterior (también he incluido la salida del mandato cat con el archivo para verificar la salida del propio script):
Conclusión
En esta guía, he explicado cómo puede utilizar el bucle while en el shell bash incluida la sintaxis, el funcionamiento del bucle while y 4 ejemplos prácticos con diferentes declaraciones.
He intentado dar todos los detalles posibles para que pueda tener una idea clara de cómo puede utilizar el bucle while en la bash.
No dude en dejarnos un comentario en nuestras redes sociales aquí o aquí para cualquier consulta o sugerencia.
Entradas Relacionadas