El bucle For es una parte integral de cualquier lenguaje de programación. Permite a los programas iterar a través de un cierto número de elementos.
Por ejemplo, si desea recorrer una lista o matriz de ‘n’ elementos, utilizaría un bucle for. Veamos un ejemplo sencillo:
1 | Violeta |
2 | Añil |
3 | Azul |
4 | Verde |
Para realizar cualquier acción o para iterar los elementos de la tabla anterior, necesitamos un Bucle For.
Bucle For de Bash
En un script bash, la sintaxis del Bucle For es la siguiente:
#!/bin/bash
for VAR in 1 2 3 4 5.....N
do
ACCIÓN 1
ACCIÓN 2
.....
hecho
El bucle For de Bash es bastante sencillo. La primera línea #!/bin/bash
indica que el código es un script bash. VAR indica la variable temporal utilizada para el bucle For. N indica el número máximo de iteraciones. ‘do’ y ‘done’ inician y detienen el Bucle, respectivamente. Las acciones son los comandos que se ejecutan dentro del Bucle.
Podemos ejecutar Bash For Loop con diferentes variables, como listas, cadenas, enteros y arrays. Este artículo mostrará algunos ejemplos comunes del Bash For Loop.
Puede ejecutar directamente estos programas en la línea de comandos de Bash o guardarlos en un archivo y ejecutar el archivo utilizando el comando Bash filename.sh.
Lectura de una lista estática
Considere la siguiente lista – rainbowColorList = Violeta, Índigo, Azul, Verde, Amarillo, Naranja, Rojo
Podemos imprimir la lista de cadenas anterior utilizando el bucle For de Bash de la siguiente manera:
¡#! /bin/sh
# Definir la lista
rainbowColorList=Violeta,Indigo,Azul,Verde,Amarillo,Naranja,Rojo
# Patrón separador de comas utilizando //,/
para colores en ${rainbowColorList//,/ }
do
echo $colores
hecho
La salida será la lista de elementos en una nueva línea.
#Salida
Violeta
Índigo
Azul
Verde
Amarillo
Naranja
Rojo
Lectura de una matriz
La sintaxis para declarar un array es diferente. Utilice paréntesis para cada elemento (cadena).
rainbowArray=("Violeta" "Índigo" "Azul" "Verde" "Amarillo" "Naranja" "Rojo")
for colores in "${arrayarcoiris[@]}"; do
echo "Me gustan los $colores"
hecho
@’ se utiliza para iterar por cada elemento de la matriz.
#Salida
Me gusta el Violeta
Me gusta el Índigo
Me gusta el Azul
Me gusta el Verde
Me gusta el Amarillo
Me gusta el Naranja
Me gusta el Rojo
También podemos utilizar el bucle For para imprimir los índices y los elementos de la matriz.
#Impresión con índice
rainbowArray=("Violeta" "Índigo" "Azul" "Verde" "Amarillo" "Naranja" "Rojo")
for i in "${!rainbowArray[@]}";
do
echo "Color en el índice " $i " : " "${rainbowArray[$i]}"
i=$((i 1));
hecho
#Salida
Color en el índice 0 : Violeta
Color en el índice 1 : Índigo
Color en el índice 2 : Azul
Color en el índice 3 : Verde
Color en el índice 4 : Amarillo
Color en el índice 5 : Naranja
Color en el índice 6 : Rojo
Observe que utilizamos ‘!’ en el bucle para obtener el índice del elemento.
Iterando un rango de números
Podemos utilizar el bucle For de Bash para iterar sobre un rango de números.
#iterando sobre un rango de números
echo "Comienza la cuenta atrás..."
for N in {10..0}
do
echo "$N"
hecho
El ‘..’ indica un rango de números.
#Salida
10
9
8
7
6
5
4
3
2
1
0
También podemos omitir números especificando el rango.
En el siguiente ejemplo, estamos saltando la cuenta por 3.
#iteración con conteo saltado
echo "Comienza la cuenta atrás..."
for N in {30..0..3}
do
echo "$N"
hecho
El programa anterior comienza con 30 como primer número y cuenta hacia abajo hasta 0. El último parámetro del bucle for ‘3’ especifica el número de la cuenta de salto.
#Salida
30
27
24
21
18
15
12
9
6
3
0
Cadenas y caracteres
Podemos hacer muchas operaciones interesantes con cadenas con el bucle For de Bash.
Por ejemplo, podemos leer cada carácter de una cadena utilizando el operador ‘seq’ en un bucle For:
#leer caracteres de una cadena
mipalabra="bienvenido"
for i in $(seq 1 ${#mipalabra})
do
echo "${myword:i-1:1}"
hecho
Tenga en cuenta que la ‘seq’ debe empezar por 1 para obtener primero el primer carácter.
#Salida
W
e
l
c
o
m
e
También podemos imprimir las cadenas separadas por espacios una a una:
#leer cada palabra de una frase
mysentence="Bienvenido a GeekFlare. Un centro único para todos los amantes de la tecnología"
for word in $mysentence; do
echo $palabra
hecho
#Salida
Bienvenido
a
GeekFlare.
Un
parada
hub
para
todos los
técnicos
Expresiones
De forma similar a cualquier otro lenguaje de programación como Java, podemos colocar expresiones dentro de un bucle For de Bash.
for (( var=10; var>=0; var-- ))
do
echo "Cuenta atrás...$var"
hecho
#Salida
Cuenta atrás...10
Cuenta atrás...9
Cuenta atrás...8
Cuenta atrás...7
Cuenta atrás...6
Cuenta atrás...5
Cuenta atrás...4
Cuenta atrás...3
Cuenta atrás...2
Cuenta atrás...1
Cuenta atrás...0
Lectura de argumentos de la línea de órdenes
Para leer los argumentos de la línea de comandos, utilizamos el comando ‘leer’. En el siguiente ejemplo, obtendremos algunos números del usuario e imprimiremos la suma utilizando el bucle For de Bash. Utilizamos la variable total para almacenar el total intermedio y final o la suma de los números.
read -a array -p "Introduzca los números que desea sumar:"
total=0
for i in ${array[@]}; do
let total =$i
hecho
echo "La suma de los números es: $total"
La salida es
#Salida
Introduzca los números que desea sumar: 3 4 66
La suma de los números es 73
Encontrar números pares e impares
Para encontrar números pares e impares entre 1 y 10 (o cualquier número N), debemos utilizar la condición if junto con el bucle Bash for. Para determinar un número par, dividiremos el número por 2 y si el resto es 0, entonces lo categorizaremos como par, si no, impar.
#declare la lista donde se ordenarán y guardarán los números pares e impares
evennum=""
oddnum=""
for (( i=1; i<=10; i ))
do
resto=$( $i % 2 ))
if [ $resto -eq 0 ]; then
evennum="$resto $i "
else
oddnum="$oddnum $i "
fi
hecho
echo "Los números pares son: " $evennum
echo "Los números impares son: "$oddnum
Observe que estamos dando el rango como 10 en el ejemplo anterior. Podemos cambiar este número para obtener números pares e impares entre cualquier rango. También puede intentar leer el número del usuario utilizando el comando ‘read’ que aprendimos en la sección anterior.
#Salida
Los números pares son 2 4 6 8 10
Los números impares son 1 3 5 7 9
Bucle infinito
El bucle infinito o infinity Loop es un bucle que no para de ejecutarse, y el programa debe ser forzado a detenerse utilizando Ctrl C. Podemos crear fácilmente un bucle infinito utilizando el operador ‘; ;’ dentro del bucle for:
for (( ; ; ))
do
echo "Bienvenido a Geekflare"
hecho
#Salida
Bienvenido a Geekflare
Bienvenido a Geekflare
Bienvenido a Geekflare
Bienvenido a Geekflare
Bienvenido a Geekflare
Bienvenido a Geekflare
Bienvenido a Geekflare
Bienvenido a Geekflare
Bienvenido a Geekflare
Bienvenido a Geekflare
^C
$
Sentencia Break
Las sentencias Break se utilizan para salir del bucle cuando se cumple una condición ‘if’.
for color in Violeta Azul Indigo Verde Amarillo Naranja Rojo
do
if [[ "$color" == 'Verde' ]]; then
break
fi
echo "Buscando Verde, el color ahora es $color"
hecho
echo "He encontrado el color $color"
En este ejemplo, estamos intentando encontrar el color verde. El bucle For hace un bucle a través de cada color, y una vez que se encuentra el color verde, el programa sale del bucle debido a la sentencia break.
#Salida
Buscando Verde, el color ahora es Violeta
Buscando Verde, el color ahora es Índigo
Buscando el Verde, el color ahora es Azul
He encontrado mi color Verde
Sentencia Continuar
Continuar se utiliza para saltar el bucle actual y pasar al siguiente en función de una determinada condición. Por ejemplo, si no queremos imprimir el color ‘Verde’ de nuestro programa anterior, podemos poner continuar, y todos los demás colores excepto el Verde serán mostrados.
for color in Violeta Índigo Azul Verde Amarillo Naranja Rojo
do
if [[ "$color" == 'Verde' ]]; then
continúe
fi
echo "$color"
hecho
#Salida
Violeta
Índigo
Azul
Amarillo
Naranja
Rojo
Palabras finales
Hemos cubierto los usos más comunes de un Bash For Loop, utilizando cadenas, enteros, arrays y listas. Si está aprendiendo Linux pero tiene una máquina Windows 10, puede utilizar la función WSL e instalar Linux en su máquina Windows.
A continuación, puede utilizar el terminal de Linux de forma similar a CMD.
A continuación, puede comprobar cómo ejecutar scripts bash utilizando Python.