📚 Módulo 5: Organizando y escalando tareas¶
Duración estimada: según tu ritmo y experiencia.
Objetivo:
Estructurar scripts con funciones,
usar bucles avanzados (while
, until
),
programar tareas con cron
,
y depurar eficientemente,
explorando su aplicación técnica. 🎯
Prerrequisitos:
Haber completado los Módulos 1, 2, 3 y 4,
acceso a un sistema Linux, macOS o WSL
con una terminal y un editor de texto (nano
, vim
o VS Code).
Nota: El tiempo varía según tu nivel y dedicación; experimenta con cada herramienta para optimizar tus scripts.
📖 Contenidos del Módulo¶
5.1. Funciones: Organiza tu código ⚙️¶
Teoría:
Las funciones agrupan comandos reutilizables en scripts.
Se definen con nombre() { comandos; }
y se llaman con nombre
.
Técnicamente, esto mejora la modularidad y mantenimiento.
Práctica:
- Crea un script
funciones.sh
:nano funciones.sh
- Añade una función básica:
Guarda, da permisos con
#!/bin/bash saludo() { echo "¡Hola desde la función!" } saludo
chmod +x funciones.sh
y ejecuta. - Pasa un argumento a la función:
nano funciones.sh saludo() { echo "¡Hola, $1!" } saludo "Aprendiz" ./funciones.sh
- Crea una función con retorno:
nano funciones.sh suma() { echo $(( $1 + $2 )) } resultado=$(suma 5 3) echo "Suma: $resultado" ./funciones.sh
- Llama la función varias veces:
nano funciones.sh for i in 1 2 do saludo "Intento $i" done ./funciones.sh
Dato curioso
Las funciones reducen duplicación de código, como en programas grandes. 😄
5.2. Bucles avanzados: while
y until
🛡️¶
Teoría:
while
repite mientras una condición sea verdadera.
until
repite hasta que una condición sea verdadera.
Técnicamente, esto permite control preciso sobre repeticiones.
Práctica:
- Crea un script
bucle_while.sh
:nano bucle_while.sh
- Añade un
while
básico:Guarda, da permisos y ejecuta.#!/bin/bash contador=0 while [ $contador -lt 3 ] do echo "Contador: $contador" contador=$((contador + 1)) done
- Usa
until
para un conteo inverso:nano bucle_until.sh #!/bin/bash contador=3 until [ $contador -eq 0 ] do echo "Faltan: $contador" contador=$((contador - 1)) done chmod +x bucle_until.sh ./bucle_until.sh
- Combina con entrada:
nano bucle_while.sh read -p "Hasta dónde contar? " limite while [ $contador -le $limite ] do echo "Número: $contador" contador=$((contador + 1)) done ./bucle_while.sh
- Añade condición compleja:
nano bucle_while.sh while [ $contador -le 5 ] && [ $((contador % 2)) -eq 0 ] do echo "Par: $contador" contador=$((contador + 1)) done ./bucle_while.sh
Consejo
Usa while
para condiciones dinámicas; valida entradas para evitar bucles infinitos. 💡
5.3. Programación con cron
: Tareas automáticas 📜¶
Teoría:
cron
programa tareas para ejecutarse en horarios específicos.
Se edita con crontab -e
usando formato min hora día mes día_semana comando
.
Técnicamente, esto automatiza procesos en segundo plano.
Práctica:
- Edita el crontab:
Añade una línea como:
crontab -e
* * * * * echo "Prueba" >> /tmp/cron.log
. - Verifica la ejecución:
Nota: Puede tardar un minuto; revisa permisos.
cat /tmp/cron.log
- Programa un script cada 5 minutos:
Asegúrate de usar la ruta correcta de
crontab -e # Añade: */5 * * * * /ruta/a/tu/script.sh >> /tmp/log.txt 2>&1
funciones.sh
. - Crea un script para
cron
:nano tarea.sh #!/bin/bash date >> /tmp/tarea.log chmod +x tarea.sh crontab -e # Añade: * * * * * /ruta/a/tarea.sh cat /tmp/tarea.log
- Elimina una tarea:
crontab -e # Comenta o elimina la línea añadida
Advertencia
Usa rutas absolutas en cron
(ej. /home/usuario/script.sh
) y verifica permisos. 🛑
5.4. Depuración avanzada: Soluciona problemas 🏗️¶
Teoría:
set -x
traza ejecución, set -e
detiene en errores.
bash -x script.sh
ejecuta con depuración externa.
Técnicamente, esto asegura scripts robustos.
Práctica:
- Crea un script con error:
Ejecuta y observa el fallo.
nano depura.sh #!/bin/bash a=5 b= echo $((a / b))
- Usa
set -x
para trazar:nano depura.sh #!/bin/bash set -x a=5 b=0 echo $((a / b)) set +x chmod +x depura.sh ./depura.sh
- Activa
set -e
para salir en errores:nano depura.sh #!/bin/bash set -e set -x a=5 b=0 echo $((a / b)) set +x ./depura.sh
- Depura desde la terminal:
bash -x depura.sh
- Corrige y prueba:
nano depura.sh if [ $b -ne 0 ] then echo $((a / b)) else echo "Error: División por cero" fi ./depura.sh
Consejo
Usa set -e
en producción para detener scripts en fallos críticos. 💡
5.5. Estructura profesional: Un script completo 🚀¶
Teoría:
Un script profesional usa funciones, validación y documentación.
Ejemplo: comentarios #
y manejo de errores.
Técnicamente, esto asegura escalabilidad.
Práctica:
- Crea un script organizado:
nano backup.sh #!/bin/bash # Script de respaldo diario backup() { cp $1 /tmp/backup_$(date +%F).txt } if [ -f "$1" ] then backup "$1" else echo "Archivo no encontrado" fi
- Dale permisos y prueba:
chmod +x backup.sh echo "Datos" > prueba.txt ./backup.sh prueba.txt ls /tmp/backup*
- Añade un bucle y
cron
:nano backup.sh for file in *.txt do backup "$file" done crontab -e # Añade: 0 0 * * * /ruta/a/backup.sh
- Incluye depuración:
nano backup.sh set -x backup() { cp $1 /tmp/backup_$(date +%F).txt } set +x ./backup.sh prueba.txt
- Verifica y limpia:
ls /tmp/backup* rm /tmp/backup*
Consejo
Documenta con #
para que otros (o tú) entiendan el script. 💡
🛠️ Ejercicios prácticos¶
- Función:
- Crea una función que muestre la fecha en un formato personalizado.
- While:
- Usa
while
para contar hasta un número ingresado.
- Usa
- Cron:
- Programa un script para guardar la hora cada hora.
- Depuración:
- Depura un script con división por cero usando
set -e
.
- Depura un script con división por cero usando
- Desafío:
- Crea un script que respalde todos los
.txt
con funciones ycron
.
- Crea un script que respalde todos los
📝 Evaluación¶
Cuestionario corto (5 preguntas):
- ¿Qué hace una función en Bash?
- ¿Cuál es la diferencia entre
while
yuntil
? - ¿Cómo se programa una tarea con
cron
? - ¿Para qué sirve
set -e
? - ¿Qué mejora la documentación en un script?
Tarea práctica:
- Crea un script
organiza.sh
que:- Use una función para copiar archivos
.sh
a/tmp
. - Use
while
para procesar 5 archivos. - Programe con
cron
para ejecutarse diariamente. - Incluya depuración con
set -x
.
- Use una función para copiar archivos
- Entrega: Script, log de
cron
, y una nota con los pasos.
🎉 Recursos adicionales¶
- Documentación:
man cron
,man bash
. - Enlaces:
- Guía de funciones (detalles técnicos).
- Tutorial de
cron
(ejemplos prácticos).
Tip
Prueba cron
con tareas simples antes de automatizar críticas. 💡
🚀 Siguientes pasos¶
¡Felicidades por completar el Módulo 5! En el Módulo 6, aprenderás a conectar tu terminal al mundo real con herramientas avanzadas. ¡Sigue escalando! ✍️