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
fiEjemplo:
#!/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."
fiComparaciones 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))
doneuntil
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))
doneSentencias 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."
fiEjercicio 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))
doneEjercicio 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
