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:

1Violeta
2Añil
3Azul
4Verde
Tabla Arco Iris

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.