Shell Scripting - For Loops
Tabla de contenido:
- El golpe estándar para el lazo
- Bucle sobre cuerdas
- Recorrer un rango de números
- Recorrer elementos de la matriz
- El estilo C Bash para loop
- Romper y continuar declaraciones
- Declaración de ruptura
- Continuar declaración
- Ejemplos de Bash For Loop
- Renombrar archivos con espacios en el nombre del archivo
- Cambio de extensión de archivo
- Conclusión
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.doneindica 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 shelldoneindica 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 bashHtc one x: resuelve el problema del bucle de arranque al instalar roms personalizadas
Aprende cómo resolver el problema del bucle de arranque mientras instalas ROM personalizadas en HTC One X.
Bash hasta el bucle
En lenguajes de script como Bash, los bucles son útiles para automatizar tareas repetitivas. Este tutorial explica los conceptos básicos del ciclo hasta en Bash. El bucle hasta se usa para ejecutar un conjunto dado de comandos siempre que la condición dada se evalúe como falsa.
Cómo usar el comando linux sleep para pausar un script bash
Sleep es una utilidad de línea de comandos que le permite suspender el proceso de llamada por un tiempo específico. En este tutorial, le mostraremos cómo usar el comando de suspensión de Linux.







