Las estructuras de control son fundamentales en cualquier lenguaje de programación, y el scripting en shell no es una excepción. Estas estructuras permiten controlar el flujo de ejecución de un script, tomando decisiones y repitiendo acciones según sea necesario.
Conceptos Clave
- Condicionales (if, elif, else): Permiten ejecutar bloques de código basados en condiciones.
- Bucles (for, while, until): Permiten repetir bloques de código mientras se cumpla una condición.
- Sentencias de control (break, continue): Permiten alterar el flujo de los bucles.
Condicionales
if, elif, else
La estructura if
evalúa una condición y ejecuta un bloque de código si la condición es verdadera. Puedes usar elif
para evaluar condiciones adicionales y else
para ejecutar un bloque de código si ninguna de las condiciones anteriores es verdadera.
Sintaxis:
if [ condición ]; then # Bloque de código si la condición es verdadera elif [ otra_condición ]; then # Bloque de código si la otra condición es verdadera else # Bloque de código si ninguna condición es verdadera fi
Ejemplo:
#!/bin/bash echo "Introduce un número:" read numero if [ $numero -gt 10 ]; then echo "El número es mayor que 10." elif [ $numero -eq 10 ]; then echo "El número es igual a 10." else echo "El número es menor que 10." fi
Comparaciones Comunes
Operador | Descripción |
---|---|
-eq | Igual a |
-ne | No igual a |
-lt | Menor que |
-le | Menor o igual que |
-gt | Mayor que |
-ge | Mayor o igual que |
Bucles
for
El bucle for
itera sobre una lista de elementos, ejecutando un bloque de código para cada elemento.
Sintaxis:
Ejemplo:
while
El bucle while
ejecuta un bloque de código mientras una condición sea verdadera.
Sintaxis:
Ejemplo:
#!/bin/bash contador=1 while [ $contador -le 5 ]; do echo "Contador: $contador" contador=$((contador + 1)) done
until
El bucle until
es similar al while
, pero ejecuta el bloque de código hasta que la condición sea verdadera.
Sintaxis:
Ejemplo:
#!/bin/bash contador=1 until [ $contador -gt 5 ]; do echo "Contador: $contador" contador=$((contador + 1)) done
Sentencias de Control
break
La sentencia break
se utiliza para salir de un bucle antes de que se complete.
Ejemplo:
continue
La sentencia continue
se utiliza para saltar a la siguiente iteración del bucle.
Ejemplo:
Ejercicios Prácticos
Ejercicio 1: Condicionales
Escribe un script que pida al usuario que introduzca su edad y luego imprima un mensaje indicando si es menor de edad (menos de 18 años), adulto (18-64 años) o mayor (65 años o más).
Solución:
#!/bin/bash echo "Introduce tu edad:" read edad if [ $edad -lt 18 ]; then echo "Eres menor de edad." elif [ $edad -le 64 ]; then echo "Eres adulto." else echo "Eres mayor." fi
Ejercicio 2: Bucles
Escribe un script que imprima los números del 1 al 10 utilizando un bucle while
.
Solución:
#!/bin/bash contador=1 while [ $contador -le 10 ]; do echo "Número: $contador" contador=$((contador + 1)) done
Ejercicio 3: Sentencias de Control
Escribe un script que imprima los números del 1 al 10, pero que se detenga si encuentra el número 7.
Solución:
Conclusión
En esta sección, hemos cubierto las estructuras de control básicas en scripting de shell, incluyendo condicionales, bucles y sentencias de control. Estas herramientas son esenciales para escribir scripts más complejos y eficientes. En la próxima sección, exploraremos cómo definir y utilizar funciones y librerías en scripts de shell.
Maestría en Linux: De Principiante a Avanzado
Módulo 1: Introducción a Linux
- ¿Qué es Linux?
- Historia de Linux
- Distribuciones de Linux
- Instalando Linux
- Estructura del Sistema de Archivos de Linux
Módulo 2: Comandos Básicos de Linux
- Introducción a la Línea de Comandos
- Navegando el Sistema de Archivos
- Operaciones de Archivos y Directorios
- Visualización y Edición de Archivos
- Permisos y Propiedad de Archivos
Módulo 3: Habilidades Avanzadas en la Línea de Comandos
- Uso de Comodines y Expresiones Regulares
- Tuberías y Redirección
- Gestión de Procesos
- Programación de Tareas con Cron
- Comandos de Redes
Módulo 4: Scripting en Shell
- Introducción al Scripting en Shell
- Variables y Tipos de Datos
- Estructuras de Control
- Funciones y Librerías
- Depuración y Manejo de Errores
Módulo 5: Administración del Sistema
- Gestión de Usuarios y Grupos
- Gestión de Discos
- Gestión de Paquetes
- Monitoreo del Sistema y Optimización del Rendimiento
- Respaldo y Restauración
Módulo 6: Redes y Seguridad
- Configuración de Redes
- Firewall y Seguridad
- SSH y Acceso Remoto
- Sistemas de Detección de Intrusos
- Asegurando Sistemas Linux
Módulo 7: Temas Avanzados
- Virtualización con Linux
- Contenedores de Linux y Docker
- Automatización con Ansible
- Optimización del Kernel de Linux
- Alta Disponibilidad y Balanceo de Carga