Los bucles son uno de los conceptos fundamentales de los lenguajes de programación. Los bucles son útiles cuando desea ejecutar una serie de comandos varias veces hasta que se cumpla una condición particular.
En lenguajes de secuencias de comandos como Bash, los bucles son útiles para automatizar tareas repetitivas. Hay tres construcciones básicas de bucle en Bash scripting, for bucle, while bucle, y until bucle.
Este tutorial cubre los conceptos básicos de while bucles en Bash. También le mostraremos cómo usar el break y continue sentencias para alterar el flujo de un bucle.
Bash while Bucle #
El while loop se usa para ejecutar un conjunto dado de comandos un número desconocido de veces, siempre y cuando la condición dada se evalúe como verdadera.
El Bash while bucle toma la siguiente forma:
while [CONDITION]
do
[COMMANDS]
done
El while La instrucción comienza con while palabra clave, seguida de la expresión condicional.
La condición se evalúa antes de ejecutar los comandos. Si la condición se evalúa como verdadera, se ejecutan los comandos. De lo contrario, si la condición se evalúa como falsa, el ciclo finaliza y el control del programa pasará al comando que sigue.
En el siguiente ejemplo, en cada iteración, el valor actual de la variable i se imprime y se incrementa en uno.
i=0
while [ $i -le 2 ]
do
echo Number: $i
((i++))
done
Tue loop itera mientras i es menor o igual que dos. Producirá el siguiente resultado:
Number: 0
Number: 1
Number: 2
Infinito while Bucle #
Un ciclo infinito es un ciclo que se repite indefinidamente y nunca termina. Si la condición siempre se evalúa como verdadera, obtienes un ciclo infinito.
En el siguiente ejemplo, estamos usando el comando incorporado : para crear un bucle infinito. : siempre devuelve verdadero. También puede usar el true incorporado o cualquier otra declaración que siempre devuelve verdadero.
while :
do
echo "Press <CTRL+C> to exit."
sleep 1
done
El while el bucle anterior se ejecutará indefinidamente. Puedes terminar el ciclo presionando CTRL+C .
Aquí hay un equivalente de una sola línea:
while :; do echo 'Press <CTRL+C> to exit.'; sleep 1; done
Leer un archivo línea por línea #
Uno de los usos más comunes del while loop es leer un archivo, flujo de datos o variable línea por línea.
Aquí hay un ejemplo que lee el /etc/passwd archivo línea por línea e imprime cada línea:
file=/etc/passwd
while read -r line; do
echo $line
done < "$file"
En lugar de controlar el while bucle con una condición, estamos usando la redirección de entrada (< "$file" ) para pasar un archivo a read comando, que controla el bucle. El while el bucle se ejecutará hasta que se lea la última línea.
Cuando lea un archivo línea por línea, siempre use read con el -r opción para evitar que la barra invertida actúe como un carácter de escape.
De forma predeterminada, read El comando recorta los espacios en blanco iniciales/posteriores (espacios y tabulaciones). Usa el IFS= opción antes de read para prevenir este comportamiento:
file=/etc/passwd
while IFS= read -r line; do
echo $line
done < "$file"
break y continue Declaraciones #
El break y continue Las sentencias se pueden usar para controlar la ejecución del ciclo while.
break Declaración #
El break La instrucción finaliza el ciclo actual y pasa el control del programa al comando que sigue al ciclo terminado. Por lo general, se usa para terminar el bucle cuando se cumple una determinada condición.
En el siguiente ejemplo, la ejecución del bucle se interrumpirá una vez que el elemento iterado actual sea igual a 2 .
i=0
while [ $i -lt 5 ]
do
echo "Number: $i"
((i++))
if [[ "$i" == '2' ]]; then
break
fi
done
echo 'All Done!'
Number: 0
Number: 1
All Done!
continue Declaración #
El continue sale de la iteración actual de un bucle y pasa el control del programa a la siguiente iteración del bucle.
A continuación, una vez que el elemento iterado actual sea igual a 2 el continue hará que la ejecución regrese al principio del bucle y continúe con la siguiente iteración.
i=0
while [ $i -lt 5 ]
do
((i++))
if [[ "$i" == '2' ]]; then
continue
fi
echo "Number: $i"
done
echo 'All Done!'
Number: 1
Number: 3
Number: 4
Number: 5
All Done!
Conclusión #
El while loop ejecuta repetidamente un conjunto dado de comandos siempre que una condición sea verdadera.
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.