Skip to content

Est Control

Este documento explica cómo usar bucles, estructuras de control y el comando case en Bash.
Incluye ejemplos prácticos y comentarios explicativos.


El bucle for permite ejecutar una serie de comandos repetidamente para una lista de valores o rangos numéricos.

Ejemplo 1: Lista de elementos:

Terminal window
for fruta in manzana mango pera; do
echo "Me gusta la $fruta"
done

Recorre una lista de palabras (en este caso, frutas) y ejecuta el bloque do ... done para cada elemento.

Ejemplo 2: Rango de números:

Terminal window
for i in {1..3}; do
echo "Contando: $i"
done

Esa forma usa brace expansion: la secuencia numérica del 1 al 3 sale de la expresión entre llaves en la línea del for (véase el bloque de código).

Ejemplo 3: Sintaxis estilo C

Terminal window
for (( j=10; j>=5; j-- )); do
echo "Cuenta regresiva: $j"
done

Esta forma usa la sintaxis tradicional tipo C: for (( inicialización; condición; incremento )); do … done.


Ejecuta un bloque de código mientras una condición sea verdadera.

Terminal window
i=0
while [[ $i -lt 3 ]]; do
echo "i = $i"
((i++))
done

En este ejemplo, el bucle incrementa i desde 0 hasta que ya no sea menor que 3.

Leer líneas desde un archivo:

Puedes usar while junto con read para leer archivos línea por línea.

Terminal window
while read line; do
echo "- $line"
done < archivo.txt

Esto imprimirá cada línea del archivo precedida de un guion.


El bucle until funciona igual que while, pero se ejecuta mientras la condición sea falsa.

Terminal window
contador=1
until [[ $contador -gt 5 ]]; do
echo "Contando: $contador"
((contador++))
done

En este ejemplo, el bucle incrementa el contador desde 1 hasta 5.


Los comandos continue y break sirven para controlar el flujo dentro de los bucles.

Terminal window
contador=0
while true; do
((contador++))
# Si el contador es 3, saltar esta vuelta
if [[ $contador -eq 3 ]]; then
echo "Saltando el número 3..."
continue
fi
echo "Número: $contador"
# Si el contador llega a 5, terminar el bucle
if [[ $contador -eq 5 ]]; then
echo "Se alcanzó el 5. Saliendo..."
break
fi
done

break n rompe n niveles de bucles anidados.
continue salta directamente a la siguiente iteración.


La estructura case permite comparar una variable con múltiples patrones, similar al switch en otros lenguajes.

Terminal window
num=10
case $num in
1)
echo "Elegiste uno"
;;
2)
echo "Elegiste dos"
;;
*)
echo "Numero desconocido :v"
;;
esac

Cada bloque se cierra con ;; y el comodín * actúa como caso por defecto.