Androide

Bash para bucle

Shell Scripting - For Loops

Shell Scripting - For Loops

Tabla de contenido:

Anonim

Los bucles son uno de los conceptos fundamentales de los lenguajes de programación. Los bucles son útiles cuando desea ejecutar una serie de comandos una y otra vez hasta que se alcanza una determinada condición.

En lenguajes de script como Bash, los bucles son útiles para automatizar tareas repetitivas.

Hay tres construcciones básicas de bucle en las secuencias de comandos Bash, para el bucle, mientras que el bucle y hasta el bucle.

En este tutorial, cubriremos los conceptos básicos de bucles for en Bash. También le mostraremos cómo usar las declaraciones de interrupción y continuación para alterar el flujo de un ciclo.

El golpe estándar para el lazo

El bucle for itera sobre una lista de elementos y realiza el conjunto de comandos dado.

El Bash for loop toma la siguiente forma:

for item in do done

La lista puede ser una serie de cadenas separadas por espacios, un rango de números, salida de un comando, una matriz, etc.

Bucle sobre cuerdas

En el siguiente ejemplo, el ciclo iterará sobre cada elemento de la lista de cadenas, y el element variable se establecerá en el elemento actual.

for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done

El bucle producirá la siguiente salida:

Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium

Recorrer un rango de números

Puede usar la expresión de secuencia para especificar un rango de números o caracteres definiendo un punto inicial y final del rango. La expresión de secuencia toma la siguiente forma:

{START..END}

En el siguiente ejemplo, el ciclo iterará a través de todos los números del 0 al 3.

for i in {0..3} do echo "Number: $i" done

Number: 0 Number: 1 Number: 2 Number: 3

A partir de Bash 4, también es posible especificar un incremento al usar rangos. La expresión toma la siguiente forma:

{START..END..INCREMENT}

for i in {0..20..5} do echo "Number: $i" done

Number: 0 Number: 5 Number: 10 Number: 15 Number: 20

Recorrer elementos de la matriz

También puede usar el bucle for para iterar sobre una matriz de elementos:

En el siguiente ejemplo, estamos definiendo una matriz de BOOKS e iterando sobre cada elemento de la matriz.

BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done

Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby

El estilo C Bash para loop

La sintaxis del estilo C para el bucle está tomando la siguiente forma:

for ((INITIALIZATION; TEST; STEP)) do done

La parte de INITIALIZATION se ejecuta solo una vez cuando comienza el ciclo. Luego, se evalúa la parte TEST . Si es falso, el ciclo for finaliza. Si la TEST es verdadera, los comandos dentro del cuerpo del bucle for se ejecutan y la parte STEP se actualiza.

En el siguiente código, el bucle se inicia inicializando i = 0 , luego, antes de cada iteración, comprueba si i ≤ 10 . Si es verdadero, imprime el valor actual de i e i en 1 ( i++ ) de lo contrario el ciclo termina.

for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done

El ciclo iterará 1001 veces y producirá la siguiente salida:

Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000

Romper y continuar declaraciones

Las declaraciones break y continue se pueden usar para controlar la ejecución del bucle for.

Declaración de ruptura

La declaración de interrupción termina el ciclo actual y pasa el control del programa a la declaración que sigue a la declaración terminada. Generalmente se usa para terminar el ciclo cuando se cumple una determinada condición.

En el siguiente ejemplo, estamos usando la instrucción if para terminar la ejecución del ciclo una vez que el elemento iterado actual es igual a 'Lithium'.

for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'

Element: Hydrogen Element: Helium All Done!

Continuar declaración

La instrucción continue sale de la iteración actual de un ciclo y pasa el control del programa a la siguiente iteración del ciclo.

En el siguiente ejemplo, estamos iterando a través de un rango de números y cuando el elemento iterado actual es igual a '2', la instrucción continue hará que la ejecución regrese al comienzo del ciclo y continúe con la siguiente iteración.

for i in {1..5}; do if]; then continue fi echo "Number: $i" done

Number: 1 Number: 3 Number: 4 Number: 5

Ejemplos de Bash For Loop

Renombrar archivos con espacios en el nombre del archivo

El siguiente ejemplo muestra cómo usar el Bash for loop para renombrar todos los archivos en el directorio actual con un espacio en sus nombres reemplazando el espacio para subrayar.

for file in *\ *; do mv "$file" "${file// /_}" done

Analicemos el código línea por línea:

  • La primera línea crea un bucle for e itera a través de una lista de todos los archivos con un espacio en su nombre. La expresión *\ * crea la lista. La segunda línea se aplica a cada elemento de la lista y mueve el archivo a uno nuevo reemplazando el espacio con un guión bajo ( _ ). La parte ${file// /_} está usando la expansión del parámetro de shell para reemplazar un patrón dentro de un parámetro con una cadena. done indica el final del segmento de bucle.

Cambio de extensión de archivo

El siguiente ejemplo muestra cómo usar el Bash for loop para cambiar el nombre de todos los archivos que terminan con.jpeg en el directorio actual al reemplazar la extensión del archivo de.jpeg a.jpg.

for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done

Analicemos el código línea por línea:

  • La primera línea crea un bucle for e itera a través de una lista de todos los archivos que terminan en '.jpeg'. La segunda línea se aplica a cada elemento de la lista y mueve el archivo a uno nuevo reemplazando '.jpeg' por '.jpg'. ${file%.jpeg} para eliminar la parte '.jpeg' del nombre de archivo utilizando la expansión de parámetros de shell done indica el final del segmento de bucle.

Conclusión

En este momento, debe tener una buena comprensión de cómo usar el bash for loop para recorrer las listas.

terminal de bucle bash