Expresiones Condicionales

Clase 21 de 43Curso de Programación en Bash Shell

Resumen

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=0
pais=""
path_archivo=""

# Capturas de datos
read -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 ]; then
  echo "La persona es un niño o niña."
elif [ "$edad" -le 17 ]; then
  echo "La persona se trata de un adolescente."
else
  echo "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" ]; then
  echo "La persona es americana."
elif [ "$pais" = "Ecuador" -o "$pais" = "Colombia" ]; then
  echo "La persona es de Suramérica."
else
  echo "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 directorios
if [ -d "$path_archivo" ]; then
  echo "$path_archivo existe."
else
  echo "$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?