Bucle for en Bash
-
El bucle
for
en Bash -
Ejemplos usando el bucle
for
en Bash -
Salida condicional con un
break
en el buclefor
en Bash -
Sustitución de comandos con bucle
for
Este tutorial explica el uso del bucle for
en los scripts de Bash utilizando la notación de rango y la notación de tres expresiones como en el lenguaje de programación C.
El bucle for
en Bash
El bucle for
es una declaración de Bash que se utiliza para ejecutar comandos repetidamente. El bucle for
en Bash usa dos notaciones principales. Las dos notaciones se muestran a continuación.
La primera notación usa el bucle for
con un rango definido. En la siguiente sintaxis, el punto final del rango es n
. Significa que el bucle for
ejecutará los comandos dentro de él n
veces antes de detenerse.
for variable in 1 2 3 ... n
do
command1
command2
done
La segunda notación usa el bucle for
con una expresión de tres como en el lenguaje de programación C. exp1
es la inicialización, exp2
es la condición y exp3
es el incremento.
for ((exp1; exp2; exp3))
do
command1
command2
done
Ejemplos usando el bucle for
en Bash
Las secuencias de comandos a continuación demuestran el uso del bucle for en las secuencias de comandos de Bash.
Este script establece el valor de la variable i
en 1
la primera vez, e imprime line number 1
. Luego vuelve al bucle for
, establece la variable i
en 2
, e imprime line number 2
.
El script hace esto repetidamente, cambiando el valor de i
hasta que llega al último número, 5. Una vez que imprime line number 5
, el bucle for
sale automáticamente.
#!/bin/bash
for i in 1 2 3 4 5
do
printf "line number $i"
printf "\n"
done
Ejecutar el script anterior imprime la siguiente salida en la salida estándar.
line number 1
line number 2
line number 3
line number 4
line number 5
El siguiente script usa las llaves para definir un rango para que el bucle for
itere. Los números dentro de las llaves se incrementan secuencialmente.
La primera vez, el valor de i
se establece en 1
. Luego, el script ejecuta los dos comandos printf
dentro del bucle for
. El valor de i
se incrementa en 1, se convierte en 2
, y se ejecutan los comandos printf
dentro del bucle for.
El valor de i
se incrementa repetidamente hasta que finalmente se convierte en 5
, y una vez que se han ejecutado los dos comandos printf
, el bucle for
termina automáticamente.
!/bin/bash
for i in {1..5}
do
printf "Hello World $i"
printf "\n"
done
El siguiente es el resultado que se imprime después de ejecutar el script.
Hello World 1
Hello World 2
Hello World 3
Hello World 4
Hello World 5
A continuación, el script usa la notación de tres expresiones como en el lenguaje de programación C. En la primera expresión, x
se inicializa en 0
. La segunda expresión tiene la prueba condicional que comprueba si x
es menor o igual que el valor de la variable max
.
El valor de la variable max
se ha fijado en 5
. La última expresión incrementa el valor de x
en 1
.
La primera vez, el valor de x
es 0
, y la condición devuelve verdadera porque 0
es menor o igual que 5
. El bucle for
luego imprime number: 0
en la terminal, y el valor de x
se incrementa en 1
. x
ahora se convierte en 1
.
1
también se prueba si es menor o igual que 5
, devuelve verdadero y el bucle for imprime número: 1.
Este proceso se repite hasta que la condición devuelve falso y el bucle for
finaliza.
#!/bin/bash
max=5
printf "Print Numbers from 0 to $max\n"
for ((x=0;x<=max;x++)); do
printf "number: $x\n"
done
A continuación se muestra el resultado impreso en el terminal después de ejecutar el script.
Print Numbers from 0 to 5
number: 0
number: 1
number: 2
number: 3
number: 4
number: 5
Salida condicional con un break
en el bucle for
en Bash
El siguiente script muestra cómo salir de un bucle for
con la palabra clave break
. El bucle for
está configurado para iterar si el valor de la variable x
es menor o igual que el valor de la variable max
. Sin embargo, hay un comando test
dentro del bucle for
.
El comando test
comprueba si el valor de la variable x
es igual a 3
; si esta prueba devuelve verdadero, el script encuentra la palabra clave break
y el bucle for
sale.
#!/bin/bash
max=5
printf "Print Numbers from 0 to $max\n"
printf "Program will exit when we hit 3\n"
for ((x=0;x<=max;x++)); do
printf "number: $x\n"
if [ $x -eq 3 ]
then
break
fi
done
El siguiente es el resultado que se muestra en el terminal estándar cuando se ejecuta el script. El bucle for
existe cuando el valor de x
es igual a 3
porque el comando test
dentro del bucle for
evalúa la expresión aritmética cuando el valor de la variable x
se establece en 3
, y devuelve verdadero. Luego, el script encuentra la palabra clave break
dentro de la declaración if
y sale.
Print Numbers from 0 to 5
Program will exit when we hit 3
number: 0
number: 1
number: 2
number: 3
Sustitución de comandos con bucle for
La siguiente secuencia de comandos muestra el uso del bucle for
con sustitución de comandos. La sustitución de comandos es una función de Bash que nos permite ejecutar comandos de Linux y almacenar la salida del comando en una variable de Bash. Una vez que se ejecuta un comando usando esta función, la salida estándar del comando reemplaza el comando.
En el script, el comando cat
se ejecuta utilizando la sustitución de comandos. La salida de cat file1.txt
reemplaza el comando, y el bucle for
itera a través de la salida del comando y lo imprime en la salida estándar usando el comando printf
.
#!/bin/bash
printf "Program prints the lines of a file\n\n"
for line in $(cat file1.txt)
do
printf "$line"
printf "\n"
done
El script produce el siguiente resultado cuando se ejecuta. El archivo file1.txt
contiene una lista de tres idiomas que se imprimen en el terminal estándar.
Program prints the lines of a file
French
English
Spanish