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.