Bash 'While' Loop: tutorial y ejemplos

Usar el bucle "while" en la secuencia de comandos Bash para iterar sobre los comandos.

Bash (Bourne Again Shell) es un símbolo del sistema de shell y un lenguaje de secuencias de comandos en los sistemas operativos GNU / Linux. Es el shell predeterminado para la mayoría de las distribuciones de Linux.

Como la mayoría de los lenguajes de secuencias de comandos, Bash proporciona sintaxis de bucle para repetir tareas similares varias veces. En este artículo aprenderemos a utilizar el mientras bucle en Bash.

Introducción

El mientras El bucle en Bash se usa para ejecutar comando (s) (comandos ejecutados) varias veces en función de la salida de otro comando (s) (comandos de condición). Los comandos ejecutados seguirán ejecutándose hasta que el comando de condición se ejecute correctamente (es decir, devuelva un estado 0. Cualquier comando en Linux devuelve 0 para el éxito y un entero distinto de cero para el fracaso).

Si hay varios comandos de condición, la declaración considera solo el estado del último comando de la lista, es decir, el ciclo se ejecuta hasta que el último comando de la lista se ejecuta correctamente.

Sintaxis general

La sintaxis general para mientras bucle en Bash es:

mientras haces

La lista de comandos de ejecución seguirá ejecutándose hasta que el último comando en la lista de comandos de condición se ejecute correctamente y salga con el estado 0. En la iteración, cuando falla el último comando de condición, el ciclo sale.

El usuario puede especificar cualquier archivo ejecutable en las listas de comandos. Pueden ser programas estándar de Linux o programas de usuario o scripts personalizados. Cada comando debe estar en una nueva línea o separado por un punto y coma en la misma línea.

Veamos algunos ejemplos.

Bucle hasta que una variable tiene un valor particular: El siguiente ciclo se ejecuta hasta el valor de la variable. X no es igual a 10.

x = 0 mientras que [[$ x -ne 10]] echo $ x ((x ++)) hecho

En cada iteración, verificamos si el valor de x es 10. El valor se verifica usando el prueba mando. [[ Expresión ]] es la sintaxis para el comando de prueba (ver prueba de hombre). Aquí, dado que estamos usando el -nordeste operador (que significa "no es igual a"), el comando de prueba devuelve 0, es decir, éxito, si el valor de x no es 10, y devuelve un valor distinto de cero, es decir, falla si el valor de x es 10.

Luego, dentro del hacer hecho bloque, imprimimos el valor de x y lo incrementamos. Una vez que el valor de x es 10, el comando de prueba devuelve un estado distinto de cero y el ciclo sale.

Nota: La variable de índice que se utilizará en el bucle while debe inicializarse antes del bucle while o en los comandos de condición, a diferencia del bucle for, que permite inicializar una variable implícitamente.

Con múltiples comandos de condición: El siguiente ciclo crea 5 directorios con el nombre dir0, dir1, ... dir4.

z = 0 while echo "Lista de archivos:" ls -l [[$ z -ne 5]] do echo "Creando dir $ z ..." mkdir dir $ z ((z ++)) hecho

Primeros comandos echo "Lista de archivos:" y ls -l se ejecutará una vez por completo; su éxito o fracaso no tiene ningún impacto en la duración del ciclo.

Entonces se ejecutará el comando de prueba para verificar el valor de la variable z. Hasta que el valor de z no sea 5, el comando de prueba devuelve el estado de éxito y, por lo tanto, el ciclo sigue funcionando. Los comandos de condición y los comandos ejecutados siguen ejecutándose en orden. Aquí, para cada iteración, primero ejecutará el comando echo y el comando ls en condición y luego el comando de tercera condición verifica el valor de z. Si no es 5, ingresa al ciclo y ejecuta los comandos dados.

Romper y continuar

Declaración de ruptura para salida condicional

También podemos usar la declaración condicional Si dentro del bucle. El Si la declaración se puede utilizar con un descanso declaración, para una salida condicional del bucle.

x = 0 mientras que [[$ x -ne 10]] hacer si [[$ x -eq 5]] romper fi echo $ x ((x ++)) hecho

El ciclo while anterior imprimirá números del 0 al 4. Luego, cuando el valor de i sea 5, saldrá del ciclo. Esto es de particular utilidad cuando se va a salir de un bucle cuando un comando da una salida específica.

Continuar declaración para omitir una iteración condicionalmente

Bash también tiene un Seguir declaración, para omitir la parte restante de una iteración en un ciclo si se satisface una condición particular.

x = 0 mientras que [[$ x -ne 10]] hacer si [[$ x -eq 5]] continuar fi echo $ x ((x ++)) hecho

El ciclo anterior imprimirá números del 0 al 10, excepto el 5, porque durante la iteración de x = 5 hay una instrucción continue, que omitirá el resto del código en el ciclo al principio con la iteración de x = 6.

Uso de bucles: secuencias de comandos y línea de comandos

Las sintaxis de bucle se pueden utilizar en el shell Bash directamente o desde un archivo de script de shell ejecutable. Similar a por y mientras bucles, una vez por mientras La sintaxis de bucle se ingresa en el shell, el shell continúa el indicador para permitir que el usuario continúe con los comandos que se ejecutarán en bucle.

O bien, el usuario puede guardar esto en un archivo de secuencia de comandos y ejecutar el archivo de secuencia de comandos.

El #! / bin / bash at the start especifica el intérprete que se utilizará cuando se ejecute el archivo. Aunque Bash es el shell más utilizado hoy en día, algunos usuarios prefieren shells como zsh, que debe especificarse en lugar de bash al comienzo de este archivo.

Para dar permisos de ejecución para este archivo, ejecute:

chmod + x test.sh

Por fin, para ejecutar el archivo, correr:

./test.sh

Conclusión

El mientras bucle, similar a por y hasta los bucles son una característica importante en el script Bash. El ciclo while tiene un uso similar al ciclo hasta, excepto que se usa para ejecutar comandos / programas alternativos cuando un programa en particular tiene éxito. Esto a menudo encuentra su utilidad en scripts de red avanzados, scripts de mantenimiento del sistema, etc.