Bash For Loop con ejemplos prácticos

OUna característica esencial de todos los lenguajes de programación de computadoras es la capacidad de ejecutar un fragmento 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 Loops. En este artículo, veremos el En bucle declaración.

A En bucle La instrucción se usa para ejecutar una serie de comandos hasta que una condición 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.

Índice

Comando Bash For Loop

los En bucle en la programación Bash viene en dos sintaxis diferentes:

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 de la 'lista'. Item 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 utiliza en el cuerpo del programa.

  • El bucle For con una sintaxis como la del lenguaje de programación C
for (( expression_1; expression_2; expression_3))
do
command_one
command_two
...
done

Con la declaració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 'expresión_1' antes de realizar la primera iteración inicializando los valores de las variables para el ciclo For.

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 expression_3.

Habiendo comprendido 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 '.sh'. extensión.

Utilice For Loop para imprimir una serie de cadenas

Puede utilizar un For In Loop para imprimir una serie de cadenas. Eche un vistazo al código a continuación. Ya tenemos los tres archivos usados ​​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:

Para el programa de bucle
Para el programa de bucle

El programa anterior enumera 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 instrucció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.

Para imagen de bucle
Para imagen de bucle

El programa anterior usa el comando cp para crear copias de seguridad de los archivos en la matriz. A medida que recorre cada archivo, crea una copia de seguridad de los datos e imprime el 'Mensaje de copia de seguridad creado' 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 del 1 al 100. Escribir todos estos números en su programa hará que el código sea bastante extenso. 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.

Para el programa de bucle
Para el programa de bucle

De la salida anterior, vemos que el programa tiene números impresos del 1 al 50. Es porque 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.

Para el programa de bucle
Para el programa de bucle

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 omitiendo diez (10) dígitos en cada iteración.

'For Loop' con sintaxis de programación C

Habiendo examinado 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.

Para el programa de bucle
Para el programa de bucle

Crea un bucle infinito con bucle for

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 el programa Loop Infinite
Para el programa Loop Infinite

Para salir de un bucle infinito, presione Ctrl + C para cancelar el proceso.

Declaraciones de ruptura y continuación en un 'bucle for'

En programación, las sentencias Break y Continue controlan la ejecución de un programa. La instrucción Break termina el programa y sale del bucle. La instrucción Continue, por otro lado, fuerza a que tenga lugar la siguiente iteración del programa.

Veamos el programa a continuación, que hace uso de 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.

Para el programa de bucle
Para el programa de bucle

En la imagen de arriba, vemos que 'Kali' no se imprimió en la salida. Es porque le dimos una 'Condición Si' que verificaba el valor retenido por la variable 'distro'. Si el valor era 'Kali', la instrucción 'break' se ejecutó y finalizó el bucle.

Como se puede ver, ArchLinux no se imprimió en la salida porque la declaración de interrupción finalizó el programa.

La declaración Continuar

A diferencia de la instrucción Break, la instrucción Continue termina 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.

Para el programa de bucle
Para el programa de bucle

En la imagen de arriba, vemos que 'Kali' no se imprimió en la salida. Es porque le dimos una 'Condición Si' que verificaba el valor retenido por 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 de Bash más prácticos que utilizan el bucle For

Habiendo examinado 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 '.wav'. archivo usando 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'.

Convertir archivos MP3 a WAV
Convertir archivos MP3 a WAV

  • Programa 'For Loop' para comprobar si existen archivos firefox.desktop.

El programa siguiente iterará a través de todos los archivos presentes en el directorio applications / y dará una salida 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

Para el programa de bucle
Para el programa de bucle

Conclusión

Ahora que ha aprendido a usar el En bucle declaración en la programación Bash, cree programas para automatizar varias tareas en sus sistemas Linux. Si este artículo le resultó útil, no dude en compartir el enlace con sus amigos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir