Scripting Bash · 7 min read · Nov 14, 2025

Shell Scripting Parte 4: Estructuras de Control de Repetición

Bienvenido a la parte cuatro de la serie de tutoriales de scripting de shell de HowtoForge (Haz clic aquí para leer la parte 1, parte 2 y parte 3 del tutorial). En esta parte, cubriremos las diferentes estructuras de control de repetición del shell bash y cómo usar cada estructura proporcionando algunos ejemplos. Comencemos.

Introducción

La estructura de control de repetición, también conocida como estructura de control de bucle, es un tipo de estructura de control en los lenguajes de programación que se utiliza para simplificar tareas repetitivas o recursivas. Las declaraciones de bucle optimizan cualquier código al proporcionar una forma de minimizar el código, haciéndolo más fácil de solucionar que el código no estructurado que proporciona la misma salida. Hay tres tipos de declaraciones de bucle que el shell bash admite: los bucles for, while y until.

Bucles For

El bucle for es una declaración de bucle que utiliza la palabra clave for para declarar una declaración repetitiva. El bash admite diferentes sintaxis para la declaración del bucle for:

Sintaxis 1: Estructura For-in

for  in   
 do  
     #### tu declaración aquí  
 done

Esta sintaxis comienza con la palabra clave for, seguida de un nombre de variable, la palabra clave in y la lista de posibles valores para la variable. Cada valor en la lista estará separado por un espacio y el inicio de las líneas de código que se repetirán se define en el do y termina con una palabra clave done.

Creemos una simple declaración de bucle for que permitirá al usuario ingresar 5 valores y obtener la suma de los números:

#!/bin/bash   
 result=0;   
 input=0;   
 for var in 1 2 3 4 5   
 do   
      printf "Input integer %d : " $var   
      read input   
      result=$((result+input))   
 done   
 echo "el resultado es " $result

Declaración de bucle usando for en bash

En este ejemplo, la variable var sirve como el contador de nuestro bucle. Su valor se define en la lista de números después de la palabra clave in y el shell cambia los valores de la variable var después de cada ejecución del ciclo en la declaración de bucle. Dado que solo hay cinco valores enteros en nuestra lista, el shell ejecutará los códigos dentro de nuestra declaración de bucle solo cinco veces.

Sintaxis 2: Declaración de bucle For con valores de lista de cadenas

También puedes declarar una variable que contendrá la lista de elementos para tu contador. Por ejemplo, considera el siguiente código:

#!/bin/bash  
 list="var1 var2 var3 var4"   
 var=""   
 mkdir sample   
 cd sample   
 echo creando los "directorios...."  
 for var in $list   
 do   
      mkdir $var   
 done

Leyendo valores de cadenas usando declaración de bucle for

La línea list=”var1 var2 var3 var4” define los valores de la variable list. Luego se asignó a var en la línea for var in $list y finalmente, los directorios se crean en la línea mkdir $var.

Sintaxis 3: Declaración de bucle For con lista como archivo

También puedes recuperar una lista de un archivo existente para ser utilizada en la declaración de bucle for en lugar de declararla dentro de tu código usando el comando cat. Por ejemplo, abre tu editor de texto favorito y enumera al menos cinco nombres de directorios.

Creando directorios desde un archivo de texto usando bucle for

A continuación, abre una nueva pestaña en el mismo editor de texto y crea un nuevo script. Este script debe guardarse en el mismo directorio donde se guardó la lista de directorios que creaste previamente.

#!/bin/bash   
 dirList=$(cat list)   
 echo "creando directorios...."  
 for var in $dirList   
 do   
 mkdir $var   
 done

Creando directorios desde un archivo de texto usando bucle for

Este ejemplo es útil cuando tienes que crear cientos de directorios en tu computadora Linux, ¿no crees?

Sintaxis 4: Sintaxis similar a C

for((initialization; boolean_test; increment/decrement))  
 do   
 #### tu código va aquí  
 done

Quizás, la estructura de bucle for más familiar que el shell admite es la estructura similar a C. El bucle comienza con la inicialización de la variable contador y luego el shell evalúa la expresión booleana declarada después de la inicialización. Si el resultado de la expresión booleana es verdadero, entonces el shell ejecutará el conjunto de declaraciones dentro de la cláusula do; de lo contrario, termina la declaración de bucle y procede a la línea después de la palabra clave done. El shell procederá a la siguiente iteración a través de la declaración de incremento o decremento declarada después de la prueba booleana. Como ejemplo, reconstruyamos nuestro primer ejemplo usando esta estructura.

#!/bin/bash   
 result=0   
 input=0   
 for((var=1;var<=5;var++))   
 do   
 printf "Input integer %d : " $var   
 read input   
 result=$((result+input))   
 done  
 echo $result

Declaraciones de bucle For en bash

Declaración de Bucle While

La declaración while es un tipo de estructura repetitiva en bash que utiliza la palabra clave while. A diferencia de la sintaxis tipo C de la estructura de bucle for, la estructura de control de repetición while separa la inicialización, la prueba booleana y la declaración de incremento/decremento.

Sintaxis 1: Estructura While con declaraciones condicionales basadas en símbolos aritméticos

  
 while(condition)  
 do  
     ###tu código va aquí  
   
 done

Para poder diferenciar while de las otras declaraciones de bucle, construyamos nuestro primer ejemplo para la declaración while.

#!/bin/bash  
 result=0   
 input=0   
 var=1   
 while((var <= 5))   
 do  
 printf "Input integer %d : " $var   
 read input   
 result=$((result+input))   
 var=$((var+1))  
 done   
 echo "el resultado es " $result

Declaración de bucle While en scripting de shell Bash

Mirando nuestro ejemplo, la declaración while comienza con una inicialización de nuestra variable contador var. A continuación, la prueba booleana se declara después de la palabra clave while y el conjunto de declaraciones que se repetirán se declarará dentro de las declaraciones do y done. En las declaraciones while, el intérprete solo comenzará y ejecutará la repetición de códigos si el resultado de la prueba booleana es verdadero. Por otro lado, la declaración de bucle solo terminará la iteración de códigos cuando la expresión booleana resulte falsa.

Sintaxis 2: Declaración de Bucle While con declaración condicional basada en mnemotécnica

  
 while [  ]  
 do  
 ####tu código va aquí  
   
 done

También puedes declarar una declaración condicional basada en mnemotécnica dentro de una declaración de bucle while. Para la declaración, se utilizará un corchete cuadrado en lugar de paréntesis. (Revisa las declaraciones condicionales basadas en mnemotécnica aquí) Por ejemplo:

#!/bin/bash   
 var=1;   
 while [ $var -le 5 ]   
 do   
 printf "Input integer %d : " $var   
 read input   
 result=$((result+input))   
 var=$((var+1))   
 done   
 echo "el resultado es " $result

Declaración de bucle While en scripting de shell

Sintaxis 3: Declaración de Bucle While con declaración condicional basada en archivo

while read   
 do   
 ####tu código va aquí   
 done <

Al igual que lo que hicimos en la declaración de bucle for, también puedes abrir un archivo de texto y asociarlo en la declaración de bucle while. Por ejemplo:

#!/bin/bash   
 mkdir sample2  
cd sample2   
 echo "creando directorios..."  
 while read var   
 do   
     mkdir $var   
 done

Leyendo archivo usando bucle while en scripting bash

En este ejemplo, he reciclado la lista que creamos hace un momento y creé un nuevo script en el mismo directorio. Ten en cuenta que si tu archivo de texto se encuentra en un directorio diferente, debes proporcionar la ruta exacta del archivo después del símbolo <.

Declaración de Bucle Until

Otro tipo de declaración de bucle que el bash admite es la estructura until. La declaración until ejecuta cada comando dentro del bucle hasta que la expresión booleana declarada resulta falsa. Es completamente opuesta a la declaración while.

Sintaxis 1: Bucle Until con declaración condicional basada en símbolos aritméticos

until (())  
 do  
 ####conjunto de comandos  
 done

Tengamos un ejemplo:

result=0   
 input=0   
 var=1   
 until((var > 5))   
 do   
 printf "Input integer %d : " $var  
 read input   
 result=$((result+input))   
 var=$((var+1))   
 done   
 echo "el resultado es " $result

Declaración de bucle Until en scripting de shell

Sintaxis 2: Declaración de Bucle Until con declaración condicional basada en mnemotécnica

  
 until [  ]  
 do  
      ####tu código va aquí  
   
 done

Dado que la declaración until es solo la opuesta de la declaración de bucle while, también puedes declarar una declaración condicional basada en mnemotécnica en la estructura until. Sin embargo, para terminar el bucle, debes declarar una declaración condicional opuesta; es decir, hacer que la declaración condicional evalúe a falsa.

!/bin/bash   
 result=0   
 input=0   
 var=1   
 until [ $var -gt 5 ]   
 do   
 printf "Input integer %d : " $var   
 read input   
 result=$((result+input))   
 var=$((var+1))   
 done   
 echo "el resultado es " $result

declaración de bucle until en scripting de shell

Conclusión

Esta parte del tutorial cubre las tres estructuras de bucle que el bash admite: las declaraciones de bucle for, while y until. Cada una de estas declaraciones tiene diferentes estructuras, usos y ventajas. El bash admite diferentes estructuras, proporcionando más opciones a los programadores y, por lo tanto, facilitando la codificación de scripts de shell.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.