GNU/Linux >> Tutoriales Linux >  >> Linux

Golpe para bucle

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 alcanzar una determinada condición.

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

Hay tres construcciones básicas de bucle en Bash scripting, for bucle, while bucle, y until bucle.

En este tutorial, cubriremos los conceptos básicos de bucles for en Bash. También le mostraremos cómo usar el break y continue sentencias para alterar el flujo de un bucle.

El estándar Bash for Bucle #

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

El Bash for bucle toma la siguiente forma:

for item in [LIST]
do
  [COMMANDS]
done

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

Loop sobre cadenas #

En el ejemplo a continuación, el ciclo iterará sobre cada elemento en la lista de cadenas y la variable element se establecerá en el elemento actual:

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

El ciclo producirá la siguiente salida:

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

Recorrer un rango de números #

Puede utilizar 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}

Aquí hay un ciclo de ejemplo que itera 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}

Aquí hay un ejemplo que muestra cómo incrementar en 5:

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

Loop sobre los elementos de la matriz #

También puedes usar el for bucle para iterar sobre una matriz de elementos.

En el siguiente ejemplo, estamos definiendo una matriz llamada 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 de Bash for loop #

La sintaxis del estilo C for loop está tomando la siguiente forma:

for ((INITIALIZATION; TEST; STEP))
do
  [COMMANDS]
done

La INITIALIZATION La parte se ejecuta solo una vez cuando comienza el bucle. Entonces, el TEST parte se evalúa. Si es falso, el ciclo se termina. Si el TEST es cierto, comandos dentro del cuerpo de for se ejecutan y el STEP parte está actualizada.

En el siguiente código de ejemplo, el ciclo comienza al inicializar i = 0 , y antes de cada iteración comprueba si i ≤ 10 . Si es verdadero, imprime el valor actual de i y [incrementa la variable] i por 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á el siguiente resultado:

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

break y continue Declaraciones #

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

break Declaración #

El break La instrucción finaliza el ciclo actual y pasa el control del programa a la instrucción que sigue a la instrucción terminada. Por lo general, se usa para terminar el bucle cuando se cumple una determinada condición.

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

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

echo 'All Done!'
Element: Hydrogen
Element: Helium
All Done!

continue Declaración #

El continue sale de la iteración actual de un bucle y pasa el control del programa a la siguiente iteración del bucle.

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

for i in {1..5}; do
  if [[ "$i" == '2' ]]; then
    continue
  fi
  echo "Number: $i"
done
Number: 1
Number: 3
Number: 4
Number: 5

Bash for Ejemplos de bucles #

Renombrar archivos con espacios en el nombre de archivo #

El siguiente ejemplo muestra cómo cambiar el nombre de todos los archivos en el directorio actual con un espacio en sus nombres reemplazando el espacio por un guión bajo:

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

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

  • La primera línea crea un for bucle 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 de parámetros de shell para reemplazar un patrón dentro de un parámetro con una cadena.
  • done indica el final del segmento de bucle.

Cambiando extensión de archivo #

El siguiente ejemplo muestra cómo usar Bash for bucle para cambiar el nombre de todos los archivos que se envían con .jpeg en el directorio actual reemplazando la extensión de 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 for bucle 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' con '.jpg'. ${file%.jpeg} para eliminar la parte '.jpeg' del nombre de archivo usando la expansión de parámetros de shell
  • done indica el final del segmento de bucle.

Conclusión #

El Bash for loop se usa para ejecutar un conjunto dado de comandos repetidamente por un número fijo de veces.

Si tiene alguna pregunta o comentario, no dude en dejar un comentario.


Linux
  1. Cómo escribir un bucle en Bash

  2. Bash For Loop Guía y ejemplos

  3. ¿Paralelizar un Bash For Loop?

  4. ¿Cómo crear un bucle for con un número variable de iteraciones?

  5. ¿Incrementar el número de compilación en Bash?

Bash For Loop con ejemplos prácticos

Bash Scripting – Para bucle explicado con ejemplos

Bash For Loops con ejemplos

Bash For Loop:la guía más práctica

El Bash FOR Loop explicado y simplificado

Bash Script for Loop explicado con ejemplos