Cómo usar el for loop en Bash: sintaxis y ejemplos

Un for loop en Bash es una instrucción del lenguaje de programación Bash que permite ejecutar código o un script de forma repetida. Permite realizar tareas repetitivas de forma simultánea, lo que ayuda a mejorar la eficiencia de la gestión del sistema.

Un for loop en Bash funciona asignando a una variable los elementos de una lista y ejecutando una operación para cada uno de ellos. La sintaxis básica es la siguiente:

for VARIABLE in 1 2 3 4 5 .. N
Perform the below command:
command1
command2
commandN
done

En un caso real, un for loop en Bash puede implementarse de varias maneras y suele implicar otros conceptos de programación. Por ejemplo, puedes usar un for loop en Bash para crear un bucle de tres expresiones, un bucle infinito, una secuencia con inicio y fin y mucho más. 

Sigue leyendo para saber más sobre el for loop en Bash y ver ejemplos prácticos de uso. 

Qué es un for loop en Bash

Un for loop en Bash es una estructura que permite ejecutar repetidamente un conjunto de comandos sobre varios elementos con una sola ejecución. Resulta útil para automatizar operaciones repetitivas, como cambiar el nombre de archivos, en un sistema basado en línea de comandos como un servidor virtual privado de Linux (VPS).

La lógica de un for loop en Bash es la siguiente: un conjunto de comandos seguirá ejecutándose en bucle para cada elemento incluido en la variable. Este bucle termina después de ejecutar la operación en el último elemento.

En pocas palabras, puedes interpretarlo así: por cada elemento asignado a la variable, repite el mismo conjunto de comandos. Sin embargo, puedes incorporar sentencias condicionales para modificar cómo se ejecutará el bucle.

En la siguiente sección, vamos a explorar la sintaxis de un for loop en Bash línea por línea para entender mejor cómo funciona.

Cuál es la sintaxis de un for loop en Bash

El for loop en Bash ejecuta repetidamente un conjunto de comandos mientras recorre una secuencia de elementos o valores. La sintaxis de una operación de este tipo es así:

for VARIABLE in 1 2 3 4 5 .. N
Perform the below command:
command1
command2
commandN
done

En la práctica, esta sintaxis se vería como en el siguiente ejemplo:

#!/bin/bash
for i in 1 2 3 4 5
do
echo "Hello $i"
done

Al ejecutar el archivo bash, se producirá la siguiente secuencia:

Hello 1
Hello 2
Hello 3
Hello 4 
Hello 5

Veamos cada elemento:

  • #!/bin/bash indica que el código es un script de bash.
  • i es un marcador de posición para una variable. Mientras tanto, $i es el valor individual de la variable. También puedes escribirlo como c/$c o con cualquier otro nombre.
  • in separa la variable y los elementos que van después.
  • 1 2 3 4 5 es un ejemplo de elementos sobre los que quieres aplicar la instrucción.
  • do es la palabra clave que inicia los bucles. Luego ejecutará la instrucción n veces, donde n es el número total de elementos. Aquí, n vale 5.
  • echo “Hola: $i es el comando de Linux u operación que repetiremos n veces. Recuerda que las comillas convierten todo lo que contienen en una sola variable.
  • done detiene el bucle.

Las otras dos sintaxis habituales del comando de bucle son estas:

for VARIABLE in file1 file2 file3
do
command1 on $VARIABLE
command2
commandN
done

Y esto:

for OUTPUT in $(Linux-Or-Unix-Command-Here)
do
command1 on $OUTPUT
command2 on $OUTPUT
commandN
done

Ahora que entendemos la sintaxis del for loop en Bash, veamos ejemplos de cómo es realmente el script en aplicaciones reales.

Cuáles son algunos ejemplos de bucles for en Bash

Aquí tienes ejemplos de bucles for en Bash para realizar varias operaciones. Si quieres seguir el proceso, tendrás que iniciar sesión en tu VPS. Si tienes dificultades, consulta nuestro tutorial de SSH con Putty para saber cómo hacerlo.

Recuerda que las funciones de bash deben estar en un archivo .sh . Para crear uno, ejecuta lo siguiente en la línea de comandos:

vim nombredearchivo.sh

Esto creará un archivo .sh y lo abrirá en el editor VIM. Echa un vistazo al artículo sobre funciones de bash que mencionamos antes para saber más.

Cómo usar un for loop en Bash con un número

Usar un for loop en Bash con números permite recorrer un rango en lugar de especificar los elementos uno por uno. Para hacerlo, añade el rango entre llaves y separado por dos puntos.

Por ejemplo, el siguiente bucle mostrará todos los números del uno al cinco:

for i in {1..5}
do
  echo "$i"
done

También puedes cambiar el incremento con la sintaxis de tres expresiones {START.END.INCREMENT}. Aquí tienes el ejemplo de código:

for i in {1..10..2}
do
  echo "Number: $i"
done

¡Importante!

En algunos lenguajes de scripting, la sintaxis de incremento usa paréntesis dobles en lugar de llaves. En cualquier caso, los dos tienen la misma función.

El bucle empezará con el valor inicial de 1, aumentará de dos en dos hasta 3 y así sucesivamente. Cuando llegue al valor final de 10, el código se detendrá. Aquí tienes el resultado:

Salida del bucle for de bash con incremento

Ten en cuenta que la función de rango solo está disponible en Bash 3.0 o versiones posteriores, mientras que el incremento es compatible con Bash 4.0 y versiones más recientes.

Cómo usar un for loop en Bash con elementos de un array

Combinar un for loop en Bash con una matriz permite recorrer elementos agrupados y ejecutar un conjunto de comandos para cada uno de ellos. En lugar de usar una lista, incorporar arrays en Bash hace que tu script esté más organizado y sea más fácil de leer, sobre todo cuando quieres usar muchos elementos.

Para usar un for loop en Bash con un array, declara el array y sus elementos al principio. Luego, añádelo a tu expresión for-in así:

#Declara un array de items
array=("item1" "item2" "item3" "item4")
#Iterate through the array and apply the operations
for item in "${array[@]}"
do
   command1
   command2
   command3
done

Aquí tienes un ejemplo de un for loop en Bash con elementos de un array, usando frutas como elementos:

fruit_array=("apple" "banana" "red cherry" "green grape")
for fruit in "${fruit_array[@]}"
do
   echo "Fruit: $fruit"
done

El bucle de bash recorrerá los elementos del array y usará el comando echo para mostrarlos con el prefijo “Fruit:“. Este es el resultado:

La salida de un bucle for de bash con un array

Si añades otro comando, el bucle operará sobre el mismo elemento antes de pasar al siguiente. Por ejemplo, insertaremos otro echo para añadir un sufijo al elemento. Aquí tienes el resultado:

La salida de un bucle for de bash con un array y dos operaciones

Cómo usar un for loop en Bash con una variable de shell

Combinar un for loop en Bash con una variable de shell permite almacenar elementos que tu código recorrerá. Funciona de forma similar a una matriz porque agrupa varios elementos, pero usa espacios para separar las entradas.

Un for loop en Bash con una variable de shell usa la siguiente sintaxis:

#Define la variable de shell
variable="a single item"
#Recorre la variable y aplica las operaciones
for item in $variable
do
   command1
   command2
   command3
done

La variable de shell solo contiene un elemento de datos, pero el bucle de Bash recorre automáticamente los elementos separados por espacios y los trata como entidades distintas. Ten en cuenta este ejemplo:

var_numbers="1 2 3 4 5"
for number in $var_numbers
do
   echo "Number: $number"
done

En lugar de imprimir los números como una cadena, el bucle de bash los imprimirá por separado porque están separados por un espacio. Para tratar los elementos como una sola entidad, encierra la variable $var_numbers entre comillas en la expresión for-in, así:

for number in "$var_numbers"
La salida de un bucle for de bash con una variable de un solo elemento

Puedes cambiar el comportamiento de las variables de Bash para modificar la salida del bucle. Para saber más al respecto, consulta nuestro tutorial sobre variables en Bash.

Cómo usar un for loop en Bash con cadenas de texto

Combinar un for loop en Bash con cadenas permite recorrer texto para realizar operaciones como concatenar, que normalmente se agrupa en una variable o matriz de shell. Usar una variable de shell es habitual si las cadenas no están separadas por un espacio, como en la siguiente sintaxis:

variable="string1 string2 string3"
for item in $variable
do
   command1
   command2
   command3
done

Mientras tanto, usa un for loop en Bash con cadenas agrupadas en un array si la cadena contiene espacios en blanco. Además de permitir que el bucle de bash lea elementos separados por espacios, resulta más fácil recorrerlos y expandirlos. Esta es la sintaxis:

array=("First item" "Second item" "Third item" "Fourth item")
for item in "${array[@]}"
do
   command1
   command2
   command3
done

Cómo usar un for loop en Bash para crear un bucle de tres expresiones

Al usar un for loop en Bash para crear un bucle de tres expresiones, empleas una estructura similar a la del lenguaje de programación C. Esta estructura consta de tres expresiones de escritura: una inicialización (EXP1), una condición (EXP2) y un paso de recuento (EXP3).

El inicializador establece la variable inicial del script y la condición determina si el bucle continúa o no. Mientras tanto, el paso de recuento modifica el valor inicial hasta que cumple la condición especificada. La sintaxis de este bucle es la siguiente:

for (( EXP1; EXP2; EXP3 ))
do
    command1
    command2
    command3
done

Para entenderlo mejor, fíjate en el siguiente ejemplo de código:

#!/bin/bash
for (( c=1; c<=5; c++ ))
do  
  echo "The number $c"
done

El código establece el valor inicial del bucle en 1. El bucle se ejecutará mientras se cumpla la condición de EXP2: la variable code no debe ser mayor que 5. La expresión de conteo incluye el signo ++, que incrementa el valor inicial en uno cada vez que se ejecuta el bucle.

El script de bash mostrará un mensaje “$c“, que hace referencia al valor del bucle, empezando en 1 hasta que alcance la condición especificada. El resultado será el siguiente:

salida del bucle for de bash de tres expresiones

Cómo usar un for loop en Bash para crear un bucle infinito

Crear un bucle infinito con un for loop en Bash permite ejecutar código de forma indefinida hasta que detengas el proceso manualmente al pulsar Ctrl + C.Hay distintas formas de hacerlo, como usar la expresión while:

while true 
do 
   echo "Hello, world!"
   sleep 1
done

Cuando se cumpla la condición, el comando mostrará el mensaje “Hello, world!” con un retraso de un segundo. El fragmento usa la sentencia condicional while true para que el código siempre devuelva un estado de salida correcto.

Como la condición sigue siendo verdadera, el código seguirá ejecutando en bucle el comando echo para mostrar el mensaje. Otro método es usar el bucle infinito de tres expresiones:

for (( ; ; ))
do
   echo "Hello, world!"
   sleep 1
done

En el fragmento, dejamos vacías todas las expresiones. Como no hay ninguna condición de finalización que cumplir, el bucle continuará hasta que lo detengas.

La salida de un bucle for infinito en bash

Cómo usar un for loop en Bash para omitir iteraciones y continuar el bucle

Un for loop en Bash permite crear un bucle que omite un valor específico y sigue ejecutándose después. Esta operación usa la siguiente sintaxis:

for i in 1 2 3 4 5
do
   if [condition]
   then
      #Continue with the next iteration of i and skip the statement
      continue   
   fi
      statement
done

Aquí tienes un ejemplo de código de un bucle con skip y continue:

for i in {1..5}
do
   if [[ "$i" == '4' ]]
   then
      continue   
   fi
      echo "Hello $i"
done

En el fragmento, definimos los elementos que hay que modificar como los números del uno al cinco. Añadimos una condición if para indicar que, cuando el valor de la variable es igual a 4, el bucle no ejecuta el código y pasa al siguiente valor. Significa que el bucle funcionará con 1, 2, 3 y 5, como muestra el resultado:

La salida del bucle skip-continue de bash

Cómo usar un for loop en Bash para salir de forma condicional con break

Un for loop en Bash permite crear un bucle que se detiene automáticamente cuando cumple una condición específica, usando la estructura for-in con esta sintaxis:

for i in 1 2 3 4 5
   do
   if [condition]
   then
      break
   fi
   statement
done

Puedes añadir otro comando al final del código, que se ejecutará cuando termine el bucle. Considera el siguiente ejemplo:

for state in Alabama Alaska Arizona Arkansas California
do
   if [[ "$state" == 'Arkansas' ]]; then
      break
   fi
   echo "state: $state"
done
echo 'That’s all!'

El script del bucle imprime todos los nombres de los estados que aparecen en la lista, pero se detiene en cuanto se cumple la condición de interrupción, es decir, cuando el valor actual es Arkansas. Luego, pasa a la siguiente instrucción para mostrar el mensaje “¡Eso es todo!“. Así es como se ve el resultado:

La salida de un bucle de bash con salida condicional mediante break

Cómo usar eficazmente un script de Bash en un VPS de Hostinger

Usar un for loop en Bash junto con las funciones de tu proveedor de hosting web puede simplificar aún más las tareas de administración del servidor y hacerlas más eficientes.

Por ejemplo, los planes de VPS de Hostinger incluyen un terminal del navegador integrado en nuestro panel de control personalizado de hosting, hPanel. Permite ejecutar comandos y utilidades de Linux, como bash loop, directamente desde tu navegador web.

Tenemos un agente de IA, Kodee, que simplifica la gestión de VPS para quienes están empezando. Por ejemplo, puedes pedirle que genere scripts con bucles for de Bash para distintas tareas con indicaciones sencillas como “¿Puedes generar un for loop en Bash que reinicia una lista de servicios?” o “Crea un for loop en Bash para hacer una copia de seguridad de varios directorios”.

Para acceder a la herramienta, inicia sesión en hPanel y haz clic en VPS en el menú superior. Selecciona el servidor correspondiente y ve a Kodee en la barra lateral. Para obtener resultados precisos, asegúrate de que tus prompts de IA para desarrollo web sean específicos y claros.

Consulta nuestra guía de prompts de IA para la gestión de VPS para saber más sobre cómo usar Kodee en distintas tareas.

¡Importante!

Debido a las limitaciones de la IA, algunas respuestas pueden ser inexactas o estar desactualizadas.

Puntos clave

Un for loop en Bash es ideal para automatizar tareas repetitivas, procesar datos y gestionar un sistema tipo UNIX. Por ejemplo, con una sola ejecución, puedes recorrer una lista de nombres para crear usuarios nuevos automáticamente al configurar un VPS nuevo.

Como hemos explicado, puedes realizar varias tareas con un for loop en Bash al combinarlo con otras estructuras de Bash, como for-in. Puedes ampliar aún más su funcionalidad al incorporar otras herramientas de línea de comandos para crear una forma eficiente de completar una tarea.

Ahora que ya entiendes los conceptos básicos de un for loop en Bash, es hora de practicar su uso en las tareas del día a día. Si usas el VPS de Hostinger, pedirle a Kodee que escriba o desglosar scripts de bucles for en Bash hace que el aprendizaje sea más intuitivo y te ayuda a familiarizarte más rápido con ello.

Para inspirarte, te recomendamos consultar nuestro tutorial de ejemplo de script de Bash para descubrir mejor cómo se aplica este lenguaje de programación en casos reales con distintos fines.

Todo el contenido tutorial en este sitio web está sujeto a los estándares y valores editoriales más rigurosos de Hostinger.

Author
El autor

Rafael L.

Rafael es un especialista en localización de software y marketing con más de 10 años de experiencia. Forma parte del equipo de localización de Hostinger. En su tiempo libre, le gusta disfrutar de la música, los videojuegos y estar al tanto de las últimas tendencias tecnológicas.

Lo que dicen nuestros clientes

Deja una respuesta

Llena los campos obligatorios, por favor.Acepta la casilla de verificación Privacidad, por favor.Llena los campos requeridos y acepta la casilla de verificación de privacidad, por favor.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.