En este capítulo, discutiremos los bucles de shell en Unix. Un bucle es una poderosa herramienta de programación que le permite ejecutar un conjunto de comandos repetidamente. En este capítulo, examinaremos los siguientes tipos de bucles disponibles para los programadores de shell:
Utilizará diferentes bucles según la situación. Por ejemplo, el tiempo loop ejecuta los comandos dados hasta que la condición dada permanece verdadera; los Hasta que El bucle se ejecuta hasta que se cumple una condición determinada.
Una vez que tenga una buena práctica de programación, obtendrá la experiencia y, por lo tanto, comenzará a usar el bucle adecuado según la situación. Aquí, tiempo y por los bucles están disponibles en la mayoría de los otros lenguajes de programación como C, C ++ y PERLetc.
Bucles de anidamiento
Todos los bucles admiten el concepto de anidamiento, lo que significa que puede colocar un bucle dentro de otro similar o bucles diferentes. Este anidamiento puede aumentar hasta un número ilimitado de veces según sus necesidades.
Aquí hay un ejemplo de anidación. tiempo círculo. Los otros bucles se pueden anidar según los requisitos de programación de una manera similar:
Anidando bucles while
Es posible utilizar un bucle while como parte del cuerpo de otro bucle while.
Sintaxis
while command1 ; # this is loop1, the outer loop do Statement(s) to be executed if command1 is true while command2 ; # this is loop2, the inner loop do Statement(s) to be executed if command2 is true done Statement(s) to be executed if command1 is true done
Ejemplo
A continuación, se muestra un ejemplo sencillo de anidación de bucles. Agreguemos otro bucle de cuenta regresiva dentro del bucle que solía contar hasta nueve:
#!/bin/sh a=0 while [ "$a" -lt 10 ] # this is loop1 do b="$a" while [ "$b" -ge 0 ] # this is loop2 do echo -n "$b " b=`expr $b - 1` done echo a=`expr $a + 1` done
Esto producirá el siguiente resultado. Es importante notar cómo echo -n trabaja aquí. Aquí -norte La opción permite que echo evite imprimir un carácter de nueva línea.
0 1 0 2 1 0 3 2 1 0 4 3 2 1 0 5 4 3 2 1 0 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0