Como cualquier otro lenguaje de secuencias de comandos, Bash también admite bucles.
Los bucles son excelentes para realizar tareas repetitivas. Podemos hacer uso de bucles for y while en nuestros scripts de Bash.
Bash For Loop
La sintaxis del bucle for es:
for VARIABLE in PARAM1 PARAM2 PARAM3
do
// scope of for loop
done
El bucle for se ejecutará para cada parámetro. Los parámetros pueden ser números, rango de números o cadenas, etc.
Ejemplo de Bash For Loop
Este ejemplo simple imprime números, del 1 al 5 usando el ciclo for:
#!/bin/bash
for i in 1 2 3 4 5
do
echo "$i"
done
Salida:
1
2
3
4
5
Bash For Loop - Imprimir rango de números
También podemos definir un rango de números para recorrer:
Por ejemplo:
for i in {1..5}
do
echo "$i"
done
Salida:
1
2
3
4
5
Bash Loop Through Strings
También podemos usar el ciclo for para recorrer los parámetros de cadena:
#!/bin/bash
for day in MON TUE WED THU FRI SAT SUN
do
echo "$day"
done
Salida:
MON
TUE
WED
THU
FRI
SAT
SUN
Bash For Loop - Estilo C
También podemos usar una sintaxis de estilo C para escribir el bucle for. Por ejemplo:
#!/bin/bash
for ((i=1; i<=5; i++))
do
echo "$i"
done
Salida
1
2
3
4
5
For Loop para imprimir la lista de archivos en el directorio actual
Para listar todos los archivos en el directorio actual usando bash for loop, usamos:
#!/bin/bash
for fname in ./
do
ls -l $fname
done
Bash While Bucle
Bash también admite bucles while. Los bucles while ejecutan un conjunto de instrucciones hasta que una condición se evalúa como verdadera.
La sintaxis del ciclo while de Bash es:
while [condition]
do
//execute instructions
done
La condición se evalúa antes de ejecutar cualquier instrucción. Por lo tanto, es necesario tener un medio para actualizar la condición, de lo contrario, el bucle se ejecutará para siempre.
Ejemplo de bucle Bash While
El siguiente es un ciclo while simple que imprime los números del 1 al 5. El ciclo finaliza cuando el número es mayor que 5.
#!/bin/bash
num=1
while [ $num -le 5 ]
do
echo "$num"
let num++
done
Bash estilo C while loop
Al igual que el bucle for, también podemos escribir el bucle while de bash en un lenguaje similar al estilo C.
Por ejemplo:
#!/bin/bash
num=1
while((num <= 5))
do
echo $num
let num++
done