📚 Módulo 3: Tomando decisiones con tu terminal¶
Duración estimada: según tu ritmo y experiencia.
Objetivo:
Dominar condicionales (if, case)
para tomar decisiones en scripts,
usar bucles (for)
para repetir tareas,
y entender su aplicación técnica. 🎯
Prerrequisitos:
Haber completado los Módulos 1 y 2,
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 ejemplo para dominar la lógica.
📖 Contenidos del Módulo¶
3.1. Condicionales: ¿Sí o no? 🔄¶
Teoría:
Los condicionales (if) evalúan condiciones y ejecutan código según el resultado.
Usan operadores como = (igual) o -gt (mayor que).
Técnicamente, esto permite que los scripts tomen decisiones basadas en datos.
Práctica:
- Crea un script
decision.sh:Escribe lo siguiente.nano decision.sh - Añade un
ifbásico y guarda (Ctrl+O, Enter, Ctrl+X):#!/bin/bash if [ 5 -gt 3 ] then echo "5 es mayor que 3" fi[ ]evalúa la condición;ficierra el bloque. - Dale permisos y ejecuta:
chmod +x decision.sh ./decision.sh - Añade una condición con variable:
nano decision.sh numero=10 if [ $numero -gt 5 ] then echo "$numero es mayor que 5" fi ./decision.sh - Incluye un
elsey prueba:nano decision.sh numero=2 if [ $numero -gt 5 ] then echo "$numero es mayor que 5" else echo "$numero es menor o igual" fi ./decision.sh
Dato curioso
Los condicionales son la base de la lógica en programación. 😄
3.2. Comparaciones avanzadas: Más opciones 🖌️¶
Teoría:
Los condicionales pueden usar múltiples condiciones con && (y) o || (o).
Operadores como -eq (igual numérico) o -ne (diferente) amplían las posibilidades.
Técnicamente, esto permite decisiones complejas.
Práctica:
- Crea un script
comparar.sh:nano comparar.sh - Añade una comparación numérica:
Guarda, da permisos y ejecuta.
#!/bin/bash a=5 b=5 if [ $a -eq $b ] then echo "Los números son iguales" fi - Añade una condición con
&&:nano comparar.sh a=10 b=5 if [ $a -gt $b ] && [ $a -lt 15 ] then echo "$a está entre 5 y 15" fi ./comparar.sh - Usa
||para una condición alternativa:nano comparar.sh if [ $a -eq 10 ] || [ $b -eq 10 ] then echo "Al menos uno es 10" fi ./comparar.sh - Combina con variable de entrada:
nano comparar.sh read -p "Escribe un número: " num if [ $num -ge 0 ] && [ $num -le 10 ] then echo "Número válido" else echo "Número fuera de rango" fi ./comparar.sh
Consejo
Usa read para pedir datos al usuario; siempre valida entradas. 💡
3.3. Case: Elige entre varias opciones 📜¶
Teoría:
case evalúa una variable y ejecuta bloques según su valor.
Usa patrones como * para casos genéricos.
Técnicamente, es una alternativa eficiente a múltiples if.
Práctica:
- Crea un script
opciones.sh:nano opciones.sh - Añade un
casebásico:Guarda, da permisos y ejecuta.#!/bin/bash dia="lunes" case $dia in "lunes") echo "Inicio de semana" ;; "viernes") echo "Casi fin de semana" ;; *) echo "Otro día" ;; esac - Modifica con una variable dinámica:
nano opciones.sh read -p "Dime un día: " dia case $dia in [Ll]unes) echo "¡A trabajar!" ;; [Vv]iernes) echo "¡Casi libre!" ;; *) echo "Día normal" ;; esac ./opciones.sh - Añade más opciones:
nano opciones.sh case $dia in [Ll]unes|[Mm]artes) echo "Día laboral" ;; [Ss]abado|[Dd]omingo) echo "Fin de semana" ;; *) echo "Día normal" ;; esac ./opciones.sh - Prueba con entrada inválida:
./opciones.sh # Escribe algo como "xyz" y observa
Advertencia
case es sensible a mayúsculas; usa [Ll] para incluir variantes. 🛑
3.4. Bucles: Repite como experto ⚙️¶
Teoría:
Los bucles for repiten comandos para cada elemento en una lista.
Ejemplo: iterar sobre archivos.
Técnicamente, esto automatiza tareas repetitivas.
Práctica:
- Crea un script
repetir.sh:nano repetir.sh - Añade un bucle básico:
Guarda, da permisos y ejecuta.
#!/bin/bash for i in 1 2 3 do echo "Número: $i" done - Itera sobre archivos:
nano repetir.sh for archivo in *.sh do echo "Procesando: $archivo" done ./repetir.sh - Combina con variable:
nano repetir.sh total=0 for num in 1 2 3 4 do total=$((total + num)) done echo "Suma: $total" ./repetir.sh - Usa un rango con
seq:nano repetir.sh for i in $(seq 1 5) do echo "Iteración $i" done ./repetir.sh
Consejo
$(seq 1 5) genera una secuencia; úsalo para rangos grandes. 💡
3.5. Depuración: Corrige tu lógica 🚀¶
Teoría:
Los errores en scripts se detectan con set -x (traza) o bash -x.
Técnicamente, esto ayuda a identificar dónde falla la lógica.
Práctica:
- Crea un script con error:
Ejecuta y observa el fallo.
nano error.sh #!/bin/bash a=5 if [ $a -gt 10 echo "Mayor" fi - Activa trazas con
set -x:nano error.sh #!/bin/bash set -x a=5 if [ $a -gt 10 ] then echo "Mayor" fi set +x chmod +x error.sh ./error.sh - Corrige el error y prueba:
nano error.sh if [ $a -gt 10 ] then echo "Mayor" else echo "Menor" fi ./error.sh - Usa
bash -xdesde la terminal:bash -x error.sh - Crea un script con bucle y traza:
nano bucle.sh #!/bin/bash set -x for i in 1 2 3 do echo "Valor: $i" done set +x chmod +x bucle.sh ./bucle.sh
Consejo
Usa set -x solo para depurar; desactívalo con set +x. 💡
🛠️ Ejercicios prácticos¶
- Condicional:
- Crea un script que verifique si un número es mayor a 10.
- Case:
- Escribe un script que responda según el día de la semana.
- Bucle:
- Usa
forpara listar y contar archivos.txt.
- Usa
- Combinación:
- Combina
ifyforpara sumar números pares del 1 al 10.
- Combina
- Desafío:
- Crea un script que pida un número y use
casepara clasificarlo (bajo, medio, alto).
- Crea un script que pida un número y use
📝 Evaluación¶
Cuestionario corto (5 preguntas):
- ¿Qué hace un
ifen Bash? - ¿Cuál es la diferencia entre
&&y||? - ¿Para qué sirve el comando
case? - ¿Cómo funciona un bucle
for? - ¿Qué es
set -xy para qué se usa?
Tarea práctica:
- Crea un script
control.shque:- Pida un número al usuario.
- Use
ifpara verificar si es positivo. - Use
forpara sumar los números hasta ese valor. - Guarde el resultado en
suma.txt.
- Entrega: Script,
suma.txty una nota con los pasos.
Vídeo con la solución de la evaluación:
🎉 Recursos adicionales¶
- Documentación:
man test,man bash. - Enlaces:
- Guía de condicionales (detalles técnicos).
- Tutorial de bucles (ejemplos prácticos).
Tip
Practica combinando if y for para automatizar tareas. 💡
🚀 Siguientes pasos¶
¡Felicidades por completar el Módulo 3! En el Módulo 4, aprenderás a dominar texto y datos con herramientas avanzadas. ¡Sigue tomando el control! ✍️