30 Ejemplos de bucles Bash
Los bucles en Bash nos permiten repetir una acción varias veces mientras se cumple cierta condición. Son una herramienta fundamental en la programación de scripts en la línea de comandos y permiten automatizar tareas y ahorrar tiempo.
- Tipos de bucles en Bash
-
Ejemplos de bucles Bash
- 1. Bucle while para imprimir los números del 1 al 10
- 2. Bucle for para imprimir los números del 1 al 10
- 3. Bucle until para imprimir los números del 1 al 5
- 4. Bucle while que imprime la tabla de multiplicar de un número dado
- 5. Bucle for que imprime la tabla de multiplicar de un número dado
- 6. Bucle until que imprime los números pares hasta el 20
- 7. Bucle while que cuenta el número de archivos en una carpeta
- 8. Bucle for que cuenta el número de archivos en una carpeta
- 9. Bucle until que imprime los números impares hasta el 15
- 10. Bucle while que busca los archivos con una extensión determinada en una carpeta
- 11. Bucle for que busca los archivos con una extensión determinada en una carpeta
- 12. Bucle until que busca los archivos con una extensión determinada en una carpeta
- 13. Bucle while para descargar varios archivos de internet
- 14. Bucle for para renombrar varios archivos
- 15. Bucle until para esperar a que un proceso termine
- 16. Bucle while para imprimir los valores de una tabla hash
- 17. Bucle for que imprime las líneas de un archivo junto con su número de línea
- 18. Bucle until que espera a que se monte un dispositivo USB
- 19. Bucle while que lee líneas de un archivo y las agrega a un array
- 20. Bucle for que itera sobre los elementos de un array
- 21. Bucle until que verifica si un servidor está en línea
- 22. Bucle while que escribe varios archivos
- 23. Bucle for que renombra archivos con un prefijo dado
- 24. Bucle until que espera a que se complete un proceso en segundo plano
- 25. Bucle while para sumar los números del 1 al 10
- 26. Bucle for que ejecuta una acción para cada archivo en una carpeta
- 27. Bucle until que espera a que se desmonte un dispositivo USB
- 28. Bucle while que escribe una serie de comandos en un archivo
Tipos de bucles en Bash
Bucle while
Este tipo de bucle se ejecuta mientras se cumple una condición determinada. La sintaxis es la siguiente:
while [condición]
do
acciones
done
Por ejemplo:
n=1
while [ $n -le 5 ]
do
echo "El valor de n es: $n"
n=$((n+1))
done
Este bucle imprimirá los números del 1 al 5.
Bucle for
Este tipo de bucle se repite un número determinado de veces. La sintaxis es la siguiente:
for variable in elemento1 elemento2 ... elementoN
do
acciones
done
Por ejemplo:
for i in 1 2 3 4 5
do
echo "El valor de i es: $i"
done
Este bucle imprimirá los números del 1 al 5.
Bucle until
Este tipo de bucle se ejecuta mientras una condición sea falsa. La sintaxis es similar a la de while:
until [condición]
do
acciones
done
Por ejemplo:
n=1
until [ $n -ge 5 ]
do
echo "El valor de n es: $n"
n=$((n+1))
done
Este bucle imprimirá los números del 1 al 4.
Ejemplos de bucles Bash
1. Bucle while para imprimir los números del 1 al 10
n=1
while [ $n -le 10 ]
do
echo $n
n=$((n+1))
done
2. Bucle for para imprimir los números del 1 al 10
for i in {1..10}
do
echo $i
done
3. Bucle until para imprimir los números del 1 al 5
n=1
until [ $n -gt 5 ]
do
echo $n
n=$((n+1))
done
4. Bucle while que imprime la tabla de multiplicar de un número dado
n=1
read -p "Ingresa un número: " num
while [ $n -le 10 ]
do
echo "$num x $n = $((num*n))"
n=$((n+1))
done
5. Bucle for que imprime la tabla de multiplicar de un número dado
read -p "Ingresa un número: " num
for i in {1..10}
do
echo "$num x $i = $((num*i))"
done
6. Bucle until que imprime los números pares hasta el 20
n=0
until [ $n -gt 20 ]
do
echo $n
n=$((n+2))
done
7. Bucle while que cuenta el número de archivos en una carpeta
num=0
while read line
do
((num++))
done <<< "$(ls /carpeta)"
echo "Hay $num archivos en la carpeta /carpeta"
8. Bucle for que cuenta el número de archivos en una carpeta
num=0
for file in /carpeta/*
do
((num++))
done
echo "Hay $num archivos en la carpeta /carpeta"
9. Bucle until que imprime los números impares hasta el 15
n=1
until [ $n -gt 15 ]
do
echo $n
n=$((n+2))
done
10. Bucle while que busca los archivos con una extensión determinada en una carpeta
read -p "Ingresa la extensión de archivo a buscar: " ext
num=0
while read line
do
if [ "${line##*.}" == "$ext" ]
then
echo "$line tiene la extensión .$ext"
((num++))
fi
done <<< "$(ls /carpeta)"
echo "Se encontraron $num archivos con la extensión .$ext"
11. Bucle for que busca los archivos con una extensión determinada en una carpeta
read -p "Ingresa la extensión de archivo a buscar: " ext
num=0
for file in /carpeta/*
do
if [ "${file##*.}" == "$ext" ]
then
echo "$file tiene la extensión .$ext"
((num++))
fi
done
echo "Se encontraron $num archivos con la extensión .$ext"
12. Bucle until que busca los archivos con una extensión determinada en una carpeta
read -p "Ingresa la extensión de archivo a buscar: " ext
num=0
until [ $num -eq $(ls /carpeta/*.$ext | wc -l) ]
do
((num++))
done
echo "Se encontraron $num archivos con la extensión .$ext"
13. Bucle while para descargar varios archivos de internet
n=1
while [ $n -lt 6 ]
do
wget "https://www.sitio.com/archivo$n.zip"
n=$((n+1))
done
14. Bucle for para renombrar varios archivos
for file in *.jpeg
do
mv "$file" "${file%.jpeg}.jpg"
done
15. Bucle until para esperar a que un proceso termine
n=0
until pgrep "proceso" > /dev/null || [ $n -eq 10 ]
do
sleep 1
((n++))
done
if [ $n -eq 10 ]
then
echo "El proceso no terminó después de 10 segundos."
fi
16. Bucle while para imprimir los valores de una tabla hash
declare -A hash=(
["llave1"]="valor1"
["llave2"]="valor2"
["llave3"]="valor3"
)
while read key value
do
echo "Hash[$key]=$value"
done < <(echo "${!hash[*]}" | tr ' ' 'n'; echo "${hash[*]}" | tr ' ' 'n')
17. Bucle for que imprime las líneas de un archivo junto con su número de línea
num=1
for line in $(cat archivo.txt)
do
echo "$num: $line"
((num++))
done
18. Bucle until que espera a que se monte un dispositivo USB
n=0
until grep -q "/dev/sdb" /proc/mounts || [ $n -eq 60 ]
do
sleep 1
((n++))
done
if [ $n -eq 60 ]
then
echo "El dispositivo no se montó después de 1 minuto."
fi
19. Bucle while que lee líneas de un archivo y las agrega a un array
i=0
while read line
do
array[i]="$line"
((i++))
done < archivo.txt
20. Bucle for que itera sobre los elementos de un array
declare -a array=("elemento1" "elemento2" "elemento3")
for elem in "${array[@]}"
do
echo $elem
done
21. Bucle until que verifica si un servidor está en línea
n=0
until ping -c1 servidor.com > /dev/null || [ $n -eq 10 ]
do
sleep 1
((n++))
done
if [ $n -eq 10 ]
then
echo "El servidor no está en línea después de 10 segundos."
fi
22. Bucle while que escribe varios archivos
n=1
while [ $n -lt 6 ]
do
touch archivo$n.txt
((n++))
done
23. Bucle for que renombra archivos con un prefijo dado
prefix="prefijo"
for file in *.txt
do
mv "$file" "$prefix$file"
done
24. Bucle until que espera a que se complete un proceso en segundo plano
n=0
until tail -n1 archivo.txt | grep "completado" > /dev/null || [ $n -eq 60 ]
do
sleep 1
((n++))
done
if [ $n -eq 60 ]
then
echo "El proceso no se completó después de 1 minuto."
fi
25. Bucle while para sumar los números del 1 al 10
n=1
suma=0
while [ $n -le 10 ]
do
suma=$((suma+n))
n=$((n+1))
done
echo "La suma de los números del 1 al 10 es: $suma"
26. Bucle for que ejecuta una acción para cada archivo en una carpeta
for file in /carpeta/*
do
[ -f "$file" ] && echo "$file es un archivo normal."
[ -d "$file" ] && echo "$file es un directorio."
done
27. Bucle until que espera a que se desmonte un dispositivo USB
n=0
until ! grep -q "/dev/sdb" /proc/mounts || [ $n -eq 60 ]
do
sleep 1
((n++))
done
if [ $n -eq 60 ]
then
echo "El dispositivo no se desmontó después de 1 minuto."
fi
28. Bucle while que escribe una serie de comandos en un archivo
n=1
while [ $n -
Deja una respuesta