Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Desarrollo Última actualización: 25 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

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

 ACTION 1

 ACTION 2

.....

done

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 //,/

for colors in ${rainbowColorList//,/ }

do

 echo $colors

done

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. Utiliza paréntesis para cada elemento (String).

rainbowArray=("Violeta" "Índigo" "Azul" "Verde" "Amarillo" "Naranja" "Rojo")

for colors in "${rainbowArray[@]}"; do

 echo "Me gusta $colores"

done

@' 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 del array.

#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));

done
#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"

done

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 de conteo especificando el rango.

En el siguiente ejemplo, estamos omitiendo el conteo de 3 en 3.

#iterating with skip counting

echo "Comienza la cuenta atrás..."

for N in {30..0..3}

do

 echo "$N"

done

El programa anterior comienza con 30 como primer número y realiza una cuenta atrás hasta 0. El último parámetro del bucle para '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

myword="welcome"

for i in $(seq 1 ${#myword})

do

 echo "${myword:i-1:1}"

done

Tenga en cuenta que el '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. One stop hub for all techies"

for word in $mysentence; do

 echo $word

done
#Salida

Bienvenido 
a 
GeekFlare. 
One 
stop 
hub 
for 
all 
techies

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 "Contando hacia abajo...$var"

done
#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 órdenes, utilizamos la orden 'read'. 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

done

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 for de Bash. 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

remainder=$( $i % 2 ))

if [ $remainder -eq 0 ]; then

 evennum="$evennum $i "

else

 oddnum="$oddnum $i "

fi

done

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 parar usando Ctrl C. Podemos crear fácilmente un bucle infinito usando el operador '; ;' dentro del bucle for:

for (( ; ; ))

do

 echo "Bienvenido a Geekflare"

done
#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 'si'.

for color in Violeta Índigo Azul Verde Amarillo Naranja Rojo

do

 if [[ "$color" == 'Verde' ]]; then

 break

 fi

 echo "Buscando Verde, el color ahora es $color"

done

echo "He encontrado mi color $color"

En este ejemplo, estamos tratando de 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 el Verde, el color ahora es Violeta
Buscando el Verde, el color ahora es Añil
Buscando el Verde, el color ahora es Azul
He encontrado mi color Verde

Declaración Continuar

Continuar se utiliza para saltarse 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

 continue

 fi

 echo "$color"

done
#Salida

Violeta
Índigo
Azul
Amarillo
Naranja
Rojo

Palabras finales

Hemos cubierto los usos más comunes de un bucle For de Bash, utilizando cadenas, enteros, matrices 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.

  • Pensamientos de mariposa
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre desarrollo
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder