Implementar el bucle for en Bash
-
Bash
for
Bucle -
Sintaxis de bucle
for
de estilo C de Bash -
Sintaxis del estilo
Foreach
/For-in
de Bash -
Definición de rangos y tamaño de salto en Bash
for
Loop -
Hacer el bucle
for
en Bash Prompt y abordar el problema delimitando el punto y coma;
Este tutorial discutirá las formulaciones de secuencias de comandos de Bash disponibles para escribir un bucle for
de Bash.
Primero, aprenderemos su sintaxis y conceptos básicos. Más adelante, aprenderemos sus diferentes tipos en el script Bash, como la notación de bucle for
de estilo C y el estilo foreach
o for-in
.
Al final, concluiremos comentando el tema del punto y coma ;
mientras hace el bucle for
en el indicador de bash.
Bash for
Bucle
Un bucle en un lenguaje de programación o secuencias de comandos es una estructura de control iterativa que se utiliza para ejecutar repetidamente una declaración o un conjunto de declaraciones hasta que no se cumple un determinado criterio.
El bucle for
es la estructura de bucle que se utiliza especialmente cuando una(s) declaración(es) determinada(s) o un conjunto de comandos deben ejecutarse un número específico de veces. También podemos usar el bucle for
en el indicador de bash y el script de Bash.
El script Bash proporciona dos sintaxis para escribir los bucles for
. El primero se conoce como estilo C o bucle de tres expresiones, y es casi lo mismo que la formulación en lenguaje C para el bucle for
.
La segunda formulación es una famosa construcción de estilo foreach
o for-in
, que también ha sido adoptada por muchos lenguajes de programación populares como PHP, Python, C#, C++11, Ruby y muchos otros.
Sintaxis de bucle for
de estilo C de Bash
Este estilo usa tres expresiones como lenguaje C para especificar el número de iteraciones del bucle.
for (( initialization; condition; increment/decrement ))
do
Shell command[s]
done
Ejemplo: supongamos que queremos escribir un script que pueda ayudarnos a imprimir una tabla de cualquier número proporcionado por el usuario. Podemos hacerlo usando el siguiente código.
#!/bin/bash
echo "Enter a Number: "
read number
for ((j=1;j<=10;j++))
do
echo "$number X $j = $((number*j))"
done
El código anterior toma un número del usuario e imprime su tabla hasta 10. Suponga que el usuario ingresa 5
como un número, la salida del programa será como:
Enter a Number:
5
5 X 1 = 5
5 X 2 = 10
5 X 3 = 15
5 X 4 = 20
5 X 5 = 25
5 X 6 = 30
5 X 7 = 35
5 X 8 = 40
5 X 9 = 45
5 X 10 = 50
Sintaxis del estilo Foreach
/For-in
de Bash
Este tipo de bucle for
espera una lista de valores/elementos y realiza una única iteración para cada elemento de la lista. La lista se puede proporcionar separando cada elemento en un solo espacio, o puede especificar un rango.
for Counter in 1 2 3 4 5 .. N
do
1st statement
2nd statement
nth statement
done
Ejemplo: Imprimir Hello World
cinco veces.
#!/bin/bash
for c in 1 2 4 5 6
do
echo "$c Hello World"
done
Producción :
1 Hello World
2 Hello World
4 Hello World
5 Hello World
6 Hello World
Tenga en cuenta el 3
que falta. Este número se pierde ya que el bucle itera solo por el número de elementos dados en la lista. Por tanto, a la variable c
se le asigna primero un valor 1
, y se realiza una sola iteración.
Después de eso, se asigna 2
a c
, y se realiza la segunda iteración. Posteriormente, el siguiente valor inmediato en la lista (es decir, 4
) se asigna a la c
, y el proceso continúa hasta que finaliza toda la lista.
for Item in File_0 File_1 File_N
do
Some Operations on Item
done
O
for Item in $(Command)
do
Some Operations on Item
done
Cuando se usa un comando con el bucle for
, la variable Item
se asignará con cada uno de los tokens de salida uno por uno. Por ejemplo, el siguiente script imprimirá todos los archivos o carpetas que comiencen con f
en el directorio actual usando el bucle for
.
#!/bin/bash
for Item in $(ls f*)
do
echo "$Item"
done
Definición de rangos y tamaño de salto en Bash for
Loop
Si sabe que no falta ningún número entre algunos valores iniciales y finales. Incluso si la diferencia entre los dos valores consecutivos, también conocida como tamaño de salto, es mayor que 1, puede usar el bucle for
con la siguiente sintaxis.
for i in {Start_Value..End_Value..Jump_Size}
do
Statement(s)
done
Ejemplo: Imprimir todos los números pares entre 10 y 20 requerirá el Start_Value=10
, el End_Value=20
y el Jump_Size=2
.
#!/bin/bash
for evenNumber in {10..20..2}
do
echo "$evenNumber"
done
Producción :
10
12
14
16
18
20
Hacer el bucle for
en Bash Prompt y abordar el problema delimitando el punto y coma ;
El ;
se utiliza para delimitar o finalizar comandos en una sola línea. También hay otros delimitadores, como &
.
Sin embargo, cuando el ;
se utiliza para terminar el comando, el siguiente comando solo se ejecuta después de la ejecución completa del comando anterior, también conocido como ejecución sincrónica.
Suponga que desea escribir un bucle for
en una sola línea en el indicador de bash sin usar newline
como terminador de declaración, entonces puede usar la siguiente sintaxis tomada del manual de referencia de Bash.
for Item [ [in [List of Items] ] ; ] do commands; done
Ejemplo: El siguiente código es equivalente a nuestro script anterior para imprimir números pares.
#!/bin/bash
for even in {10..20..2} ; do echo "$even";done
do
. Por lo tanto, agregar un ;
después del do
generará un error de sintaxis.La sintaxis para el bucle for
de tres expresiones o tipo C es la siguiente.
for (( Initilization ; Condition ; Increment/Decrement )) ; do commands ; done
Ejemplo:
#!/bin/bash
for ((i=10;i<20;i=i+2));do echo "$i"; done
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn