Una característica esencial de cada lenguaje de programación de computadoras es la capacidad de ejecutar una pieza de código repetidamente. Ahorra mucho tiempo y también reduce las líneas de código en un programa. La programación Bash permite a los usuarios ejecutar una tarea una y otra vez mediante el uso de bucles. En este artículo, veremos el For Loop declaración.
Un bucle For La instrucción se usa para ejecutar una serie de comandos hasta que una condición en particular se vuelve falsa. Por ejemplo, puede usarlo para ejecutar un comando de Linux cinco veces o usarlo para leer y procesar archivos en los sistemas hasta alcanzar una condición particular.
Comando Bash For Loop
El bucle For en la programación de Bash viene en dos sintaxis diferentes:
- El For In Loop
for item in (list) do command_one command_two ... done
En la sintaxis For In Loop anterior, hay cuatro palabras clave:for, in, do y done. La lista se refiere a los valores en la 'lista'. El elemento es un nombre de variable que no es una palabra clave en el lenguaje de programación Bash.
Cuando ejecutamos el programa, ejecutará el comando dependiendo de la cantidad de elementos en la 'lista'. Por lo tanto, si la lista contiene cinco cifras (1 2 3 4 5), el comando se ejecuta cinco veces.
En cada iteración, el valor de la lista se almacena en la variable del elemento y se usa en el cuerpo del programa.
- El For Loop con sintaxis como la del lenguaje de programación C
for (( expression_1; expression_2; expression_3)) do command_one command_two ... done
Con la instrucción For Loop anterior, si es un desarrollador de C, C++ o Java, debe estar familiarizado con la sintaxis. expresión_1 significa inicialización, expresión_2 significa condición y expresión_3 significa actualización.
Cuando ejecutamos el programa, se evalúa 'expression_1' antes de realizar la primera iteración inicializando los valores de las variables para For Loop.
El cuerpo del programa se ejecuta hasta que expression_2 sea TRUE. El cuerpo del programa aquí se refiere a los comandos entre las palabras clave do y done. Ahora, después de cada iteración del programa, se evalúa expresión_3.
Habiendo entendido eso, veamos algunos ejemplos de Bash For Loop que puede utilizar en sus actividades diarias trabajando con sistemas Linux. Escribiremos scripts y los ejecutaremos en la terminal. Tenga en cuenta que todos los scripts de Bash usan la extensión '.sh.'.
Utilice For Loop para imprimir una serie de cadenas
Puede usar un For In Loop para imprimir una serie de cadenas. Echa un vistazo al código de abajo. Ya tenemos los tres archivos utilizados en el programa en nuestro directorio de trabajo. Eso es 'testFile1', 'testFile2' y 'testFile3'.
#!/bin/bash for item in testFile1 testFile2 testFile3 do cat $item echo "Done with file $item" echo done
La salida es:
El programa anterior muestra el contenido del archivo especificado en la lista. Es decir, testFile1, testFile2 y testFile3. El comando 'cat' es una utilidad de Linux que se utiliza para mostrar el contenido de un archivo.
Por lo tanto, el programa recorre los archivos que comienzan con 'testFile1', ejecuta el comando 'cat' antes de imprimir la declaración 'done with testFilee' e itera al siguiente archivo.
Después de recorrer todos los archivos de la lista, el programa finaliza automáticamente.
'For In Loop' con elementos de matriz para respaldar archivos
Puede usar un For In Loop para iterar elementos en una matriz. Eche un vistazo al código a continuación.
#!/bin/bash Files=('testFile1' 'testFile2' 'testFile3') for item in "${Files[@]}"; do cp $item{,.bak} echo "Created a backup of $item" done
La salida es como se muestra a continuación.
El programa anterior usa el comando cp para crear copias de seguridad de archivos en la matriz. A medida que itera a través de cada archivo, crea una copia de seguridad de los datos e imprime el 'Mensaje de copia de seguridad creada' antes de pasar al siguiente elemento de la matriz.
'For In Loop' con rango
Puede iterar sobre un rango de números. Por ejemplo, desea iterar entre los dígitos 1 – 100. Escribir todos estos números en su programa hará que el código sea bastante. Podemos resolver esto mediante el uso de rangos. Eche un vistazo al código a continuación.
#!/bin/bash for i in {0..50} do echo "COUNT: $i" done
La salida debe ser como se muestra a continuación.
Del resultado anterior, vemos que el programa tiene números impresos del 1 al 50. Esto se debe a que le dimos un rango de 1 a 50 dígitos.
Suponga que desea crear un rango que omita una cierta cantidad de dígitos antes de imprimir una salida. Luego necesitaremos incluir un tercer parámetro en la sintaxis del rango. Vea el código a continuación.
#!/bin/bash for i in {0..100..10} do echo "COUNT: $i" done
La salida debe ser como se muestra a continuación.
La salida debe ser como se muestra a continuación.
En la imagen de arriba, vemos que el programa imprimió números del 0 al 100 pero omitió diez (10) dígitos en cada iteración.
'For Loop' con sintaxis de programación C
Habiendo visto varios ejemplos con 'For In Loop', veamos la otra sintaxis de For Loop. Contiene una expresión de inicialización que inicializa el bucle, una expresión de condición que determina la ejecución del programa y una expresión de incremento que actualiza el valor de la variable.
Eche un vistazo al código a continuación.
#!/bin/bash for (( i=5; i>=1; i-- )) do echo "COUNT: $i" done
La salida debe ser como se muestra a continuación.
Crear un bucle infinito con For Loop
Para crear un bucle infinito en Bash, usaremos la sintaxis de programación C. Vea el código a continuación.
#!/bin/bash for (( ; ; )) do echo "Use Ctrl+C to terminate the loop." echo "Starting Infinite Loop..." done
La salida debe ser como se muestra a continuación.
Para salir de un bucle infinito, presione Ctrl + C para cancelar el proceso.
Break and Continue declaraciones en un 'For Loop'
En programación, las sentencias Break y Continue controlan la ejecución de un programa. La instrucción Break finaliza el programa y sale del bucle. La instrucción Continuar, por otro lado, obliga a que se lleve a cabo la siguiente iteración del programa.
-
La declaración de ruptura
Veamos el programa a continuación, que utiliza la instrucción Break.
#!/bin/bash for distro in Ubuntu Manjaro Debian Fedora Kali ArchLinux do if [[ "$distro" == 'kali' ]]; then break fi echo "Linux_distribution: $distro" done
La salida debe ser como se muestra a continuación.
En la imagen de arriba, vemos que 'Kali' no se imprimió en la salida. Es porque dimos una 'Condición If' que verificó el valor que tenía la variable 'distro'. Si el valor era 'Kali', la declaración 'break' se ejecutó y finalizó el bucle.
Como puede ver, ArchLinux no se imprimió en la salida porque la instrucción break finalizó el programa.
La instrucción Continuar
A diferencia de la instrucción Break, la instrucción Continue finaliza el programa en esa parte, pero fuerza la ejecución de la siguiente iteración del programa.
Eche un vistazo al código a continuación.
#!/bin/bash for distro in Ubuntu Manjaro Debian Fedora Kali ArchLinux do if [[ "$distro" == 'Kali' ]]; then continue fi echo "Linux_distribution: $distro" done
La salida debe ser como se muestra a continuación.
En la imagen de arriba, vemos que 'Kali' no se imprimió en la salida. Es porque dimos una 'Condición If' que verificó el valor que tenía la variable 'distro'. Si el valor era 'Kali', se ejecutó la instrucción 'continuar'. Terminó el bucle en este punto pero forzó la ejecución de la siguiente parte del programa.
Como puede ver, 'Kali' no se imprimió en la salida mientras que 'ArchLinux' sí. La instrucción Continuar forzó la ejecución de la siguiente parte del programa.
Programas Bash más prácticos usando el bucle For
Habiendo visto varios programas Bash usando la declaración 'For Loop', veamos ejemplos de la vida real que puede usar para administrar sus sistemas Linux.
- Un programa Bash para convertir archivos MP3 a WAV
En este programa, necesitará la herramienta MPG123 instalada en su sistema. El siguiente código busca cualquier archivo con la extensión '.mp3.' y lo convierte en un archivo '.wav.' utilizando la herramienta 'mpg123'.
#!/bin/bash for item in ./*.mp3 do mpg123 -w music.wav $item.mp3 done
En la imagen de abajo, vemos que convertimos 'Audio.mp3' a 'Music.wav'.
- Programa 'For Loop' para verificar si existen archivos firefox.desktop.
El siguiente programa iterará a través de todos los archivos presentes en el directorio application/ y dará un resultado de si firefox.desktop está presente.
#!/bin/bash for item in /usr/share/applications/* do if [ "${item}" == "/usr/share/applications/firefox.desktop" ] then echo "Firefox.Desktop is present in the applications directory"; fi done
Conclusión
Ahora que ha aprendido a usar el For Loop declaración en la programación Bash, cree programas para automatizar varias tareas en sus sistemas Linux. Si este artículo te resultó útil, no dudes en compartir el enlace con tus amigos.