Domina las expresiones condicionales en Bash con un enfoque práctico y claro. Aquí verás cómo capturar datos con read -p, construir decisiones con if, else y fi, y aplicar operadores para números, cadenas y verificación de rutas. Todo con ejemplos reales y recomendaciones puntuales para evitar errores.
¿Qué preparar y cómo capturar datos con read -p?
Antes de validar, define variables y solicita la información al usuario. Se usan tres variables: un valor numérico para la edad, una cadena para el país y un path para el archivo o directorio. Para títulos en pantalla, se usa echo -e y así habilitar caracteres especiales como saltos de línea.
Usa variables: edad=0, pais="", path_archivo="".
Captura datos con read -p y guarda en cada variable.
Cuida los espacios en los corchetes de las pruebas: evita errores sutiles.
# Variables iniciales edad=0pais=""path_archivo=""# Capturas de datosread -p "Ingrese su edad: " edad
read -p "Ingrese su país: " pais
read -p "Ingrese el path de su archivo o la dirección: " path_archivo
¿Cómo validar números con if en bash?
Para números, se emplean los operadores de comparación del test de Bash. Con ellos se construyen decisiones simples o múltiples condiciones, tanto en sentencias de decisión como en iteración cuando haga falta.
¿Qué operadores usar con números?
-lt: menor que.
-le: menor o igual que.
-ge: mayor o igual que.
# Clasificación por edad (números)if["$edad" -lt 10];thenecho"La persona es un niño o niña."elif["$edad" -le 17];thenecho"La persona se trata de un adolescente."elseecho"La persona es mayor de edad."fi
Para combinar condiciones, agrega un operador lógico (AND/OR) entre pruebas.
Recuerda: respeta los espacios al usar corchetes en las condiciones.
¿Cómo comparar cadenas y verificar directorios?
Con cadenas, se usa igualdad con comillas. Con rutas, se valida la existencia de directorios con el argumento -d. Así puedes adaptar la lógica del flujo a texto y al sistema de archivos.
¿Cómo comparar cadenas con igualdad y operadores lógicos?
La comparación de cadenas usa = y el valor va entre comillas.
Para múltiples países, combina condiciones con operador lógico OR.
# Nacionalidad (cadenas)if["$pais"="Estados Unidos"];thenecho"La persona es americana."elif["$pais"="Ecuador" -o "$pais"="Colombia"];thenecho"La persona es de Suramérica."elseecho"Se desconoce la nacionalidad."fi
¿Cómo saber si un directorio existe con -d?
Usa -d para verificar si un path apunta a un directorio existente.
Muestra un mensaje claro según el resultado.
# Verificación de directoriosif[ -d "$path_archivo"];thenecho"$path_archivo existe."elseecho"$path_archivo no existe."fi
¿Qué resultados se observaron al probar?
Entrada: edad 35, país "Ecuador", path "Martosfre/prueba". Resultado: mayor de edad; de Suramérica; directorio no existe.
Entrada: edad 67, país "Colombia", path "/home/Martosfre/Shell Course". Resultado: mayor de edad; de Suramérica; el path existe.
¿Te gustaría comentar qué otras validaciones necesitas en tus scripts y cómo combinarías condiciones para tus casos reales?