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.
Computación feliz!