Androide

Bash while loop

Bash Shell Scripting Tutorial | Shell Scripting Tutorial | Learn Shell Programming

Bash Shell Scripting Tutorial | Shell Scripting Tutorial | Learn Shell Programming

Tabla de contenido:

Anonim

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 script como Bash, los bucles son útiles para automatizar tareas repetitivas. Hay 3 construcciones básicas de bucle en las secuencias de comandos Bash, para bucle, mientras que bucle y hasta bucle.

Este tutorial explica los conceptos básicos de los bucles while en Bash, así como las declaraciones break y continue para alterar el flujo de un bucle.

Bash mientras Loop

El ciclo while se usa para ejecutar un conjunto dado de comandos un número desconocido de veces siempre que la condición dada se evalúe como verdadera.

El ciclo Bash while toma la siguiente forma:

while do done

La condición se evalúa antes de ejecutar los comandos. Si la condición se evalúa como verdadera, se ejecutan comandos. De lo contrario, si la condición se evalúa como falsa, el ciclo finalizará y el control del programa pasará al comando que sigue.

En el siguiente ejemplo, en cada iteración, el bucle imprime el valor actual de la variable i e incrementa la variable en uno.

i=0 while do echo Number: $i ((i++)) done

Tue loop itera siempre que i sea ​​menor o igual que dos. Producirá el siguiente resultado:

Number: 0 Number: 1 Number: 2

Infinito mientras Loop

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 bucle infinito.

En el siguiente ejemplo estamos utilizando el comando incorporado : que siempre devuelve verdadero para crear un bucle infinito. También puede usar el comando incorporado true o cualquier otra instrucción que siempre devuelva verdadero.

while: do echo "Press to exit." sleep 1 done while: do echo "Press to exit." sleep 1 done

El bucle while anterior se ejecutará indefinidamente. Puede terminar el ciclo presionando CTRL+C

Aquí hay un equivalente de una sola línea:

while:; do echo 'Press to exit.'; sleep 1; done while:; do echo 'Press to exit.'; sleep 1; done

Leer un archivo línea por línea

Uno de los usos más comunes del ciclo while es leer un archivo, flujo de datos o variable línea por línea.

En el siguiente ejemplo, el ciclo while leerá el /etc/passwd línea por línea e imprimirá cada línea.

file=/etc/passwd while read -r line; do echo $line done < "$file"

En lugar de controlar el ciclo while con una condición, estamos usando la redirección de entrada ( < "$file" ) para pasar un archivo a la read que es el comando que controla el ciclo. El ciclo while se ejecutará hasta que se lea la última línea.

Al leer el archivo línea por línea, siempre use read con la opción -r para evitar que la barra diagonal inversa actúe como un carácter de escape.

Por defecto, el comando de read recorta los espacios en blanco iniciales / finales (espacios y tabulaciones). Use la opción IFS= antes del comando de read para evitar este comportamiento

file=/etc/passwd while IFS= read -r line; do echo $line done < "$file"

Romper y continuar declaraciones

Las declaraciones break y continue se pueden usar para controlar la ejecución del bucle while.

Declaración de ruptura

La declaración de interrupción termina el ciclo actual y pasa el control del programa al comando que sigue al ciclo terminado. Generalmente se usa para terminar el ciclo 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 do echo "Number: $i" ((i++)) if]; then break fi done echo 'All Done!'

Number: 0 Number: 1 All Done!

Continuar declaración

La instrucción continue sale de la iteración actual de un ciclo y pasa el control del programa a la siguiente iteración del ciclo.

A continuación, una vez que el elemento iterado actual es igual a 2 la instrucción continue hará que la ejecución regrese al comienzo del ciclo y continúe con la siguiente iteración.

i=0 while do ((i++)) if]; then continue fi echo "Number: $i" done echo 'All Done!'

Number: 1 Number: 3 Number: 4 Number: 5 All Done!

Conclusión

A estas alturas ya deberías tener una buena comprensión de cómo usar el bash while loop.

terminal de bucle bash