Bucle anidado en ejemplos de script bash

Bucle anidado en ejemplos de script bash

En programación o secuencia de comandos, el bucle es uno de los conceptos más básicos y poderosos. Un bucle está realizando ciertas tareas hasta que se cumplan las condiciones especificadas. Cada lenguaje de programación o secuencia de comandos tiene diferentes formas de implementar el concepto.

En esta guía, consulte el bucle anidado en scripting de bash.

Bucle anidado

Un bucle, por definición, está realizando ciertas tareas hasta que se cumplan las condiciones. ¿Qué pasa si la tarea incluye ejecutar un bucle?? Este es el concepto de un bucle anidado. Un bucle dentro de un bucle.

Esta es la estructura básica de un bucle.

while (condición)
# algo

Aquí, el bucle mientras se seguirá realizando las tareas declaradas dentro del bloque mientras se cumpla la condición. En el caso de un bucle anidado, la estructura se vería así.

# bucle principal
while (condición)
# bucle anidado
while (condición)
# algo

En teoría, los bucles anidados pueden ir a la profundidad infinita. En muchas situaciones, los bucles anidados pueden ser la solución perfecta.

Bucle en el script bash

Bash es un poderoso lenguaje de secuencias de comandos. Hay diferentes estructuras de bucle en la fiesta. Los más populares son para, mientras y hasta los bucles. Si está familiarizado con la programación C/C ++ antes, entonces la sintaxis definitivamente se verá bastante similar.

Para bucles

Para el bucle es una de las salidas de formas más comunes y versátiles, etc. La estructura de los bucles en las secuencias de comandos de bash. La estructura también se parece mucho al bucle en c/c ++.

La estructura de For Loop in Bash es la siguiente.

para ((inicializar; condición; incremento)); hacer
# algo
hecho

La estructura se explica muy por sí misma. La sección de inicialización no es obligatoria. Sin embargo, la condición y el incremento son de mayor prioridad.

Vamos a ponerlo en acción. Aquí hay un script bash muy simplista que implementa el bucle.

para ((i = 0; i < 5 ; i++)); do
Echo "Hola mundo"
hecho

También es posible usar la lista/rango como condición de bucle. Es especialmente útil si funciona con una lista de archivos, rangos de números, matrices, salidas de comandos, etc. La estructura se parece a esto.

Para el artículo en ; hacer
# algo
hecho

Por ejemplo, el siguiente script imprimirá "Hello World" cinco veces.

para i en 1 ... 5; hacer
Echo "Hola mundo"
hecho

¿Qué pasa si necesitamos trabajar con el contenido de un directorio?? En el siguiente ejemplo, el script imprimirá todos los archivos en el directorio en /usr /bin.

para i in/usr/bin/*; hacer
echo $ i
hecho

Ahora, ¿qué hacemos para tener un bucle anidado?? Es solo uno para bucle dentro de otro. Aquí hay un bucle anidado para el ejemplo anterior.

para ((i = 0; i < 3 ; i++)); do
para ((j = 0; j < 2 ; j++)); do
Echo "Hola mundo"
hecho
hecho

La salida será "Hello World" 6 veces. El bucle exterior se ejecutará tres veces, ejecutando el bucle interno dos veces.

Mientras que bucles

El bucle While es otro bucle popular e intuitivo disponible en Scripting bash. La sintaxis se ve así.

mientras ; hacer
# algo
hecho

En el siguiente ejemplo, el script imprimirá "Hello World" cinco veces.

num = 1
mientras que [$ num -le 5]; hacer
Echo "Hola mundo"
num = $ (($ num+1))
hecho

¿Cómo parecería tener un anidado mientras bucle?? Aquí hay un ejemplo simple.

num_a = 1
num_b = 1
mientras [$ num_a -le 5]; hacer
mientras [$ num_b -le 5]; hacer
Echo "Hola mundo"
num_b = $ (($ num_b+1))
hecho
num_a = $ (($ num_a+1))
hecho

Hasta que boques

Si tiene antecedentes de programación en C/C ++, entonces está familiarizado con el bucle Do-While. Desafortunadamente, Bash no tiene nada de eso. Sin embargo, hasta que el bucle funcione de manera similar. La sintaxis también se ve igual.

hasta [ ]; hacer
# algo
hecho

La diferencia entre el tiempo y hasta que el bucle sea la condición de prueba. Mientras la condición de prueba sea verdadera, un bucle de tiempo seguirá funcionando. Un bucle hasta, sin embargo, seguirá funcionando solo si la condición es falsa.

Aquí hay un ejemplo rápido del bucle while. Imprimirá la tabla de multiplicación de 2.

num_a = 1
hasta [$ num_a -gt 10]; hacer
echo $ (($ num_a * 2))
num_a = $ (($ num_a+1))
hecho

Ruptura de bucle

En ciertas situaciones, si se cumplen ciertas condiciones, ejecutar el resto del bucle se vuelve redundante. Los descansos de bucle son una característica interesante que permite salir del bucle en una condición dada. Es más importante para los bucles anidados como cuanto más altos son los bucles, más consumo de recursos e ineficiencia.

Aquí, lo siguiente para Loop dejará de ejecutarse tan pronto como llegue a la condición.

para ((i = 1; i<=100;i++)); do
echo $ i
si [$ i -eq 10]; entonces
romper
FI
hecho

Vea cómo romper mientras el bucle para una explicación en profundidad y la demostración de descansos de bucle.

Pensamientos finales

Un bucle anidado es un concepto simple y poderoso para comprender e implementar. Con suerte, esta guía pudo describir y demostrar el concepto.

Interesado en más guías de scripts bash? Echa un vistazo a las siguientes guías.

  • Bash Infinite Loop
  • Entrada del usuario del script bash
  • Matriz de devolución de la función bash

Computación feliz!