Bash Script – DÍA 2

Condicionales y comparaciones: if, test, [ ], [[ ]], case


1. Objetivo del día

Aprender a que tus scripts tomen decisiones, usando condicionales y comparaciones:

  • comprobar valores
  • comparar números
  • comparar cadenas
  • verificar si un archivo o directorio existe
  • ejecutar diferentes caminos según la situación
  • crear menús simples con case

Es uno de los pilares de Bash scripting real.


2. Requisitos

  • Saber crear y ejecutar scripts (Día 1)
  • Saber usar variables y read

3. Sintaxis básica de if

La estructura base es:

if [ condición ]; then
    comandos
elif [ otra_condición ]; then
    comandos
else
    comandos
fi

Notas importantes:

  • [ condición ] SIEMPRE lleva espacios alrededor
    [5 -gt 3]
    ✔️ [ 5 -gt 3 ]
  • then puede ir en la siguiente línea o después de ;

4. Comparaciones numéricas

En Bash NO usamos < y > directamente.
Se usan operadores especiales:

ComparaciónOperador
igual-eq
distinto-ne
mayor que-gt
menor que-lt
>=-ge
<=-le

Ejemplo:

edad=20

if [ $edad -ge 18 ]; then
    echo "Eres mayor de edad"
else
    echo "Eres menor"
fi

5. Comparaciones de cadenas

Para comparar strings se usa:

=   igual
!=  distinto
-z  cadena vacía
-n  cadena NO vacía

Ejemplo:

if [ "$nombre" = "tomas" ]; then
    echo "Hola Tomas"
fi

Siempre pon las variables entre comillas:

✔️ "$variable"
$variable


6. Comprobar archivos y directorios

Muy usado en scripts reales:

TestSignificado
-f archivoel archivo existe y es regular
-d direl directorio existe
-e rutaexiste (archivo o directorio)
-r archivotiene permiso de lectura
-w archivoescritura
-x archivoejecutable

Ejemplo:

if [ -f config.txt ]; then
    echo "Archivo de configuración encontrado"
else
    echo "No existe"
fi

7. Sintaxis moderna con [[ ]] (recomendada)

[[ ]] es una versión mejorada:

  • soporta operadores modernos
  • no necesita tantas comillas
  • menos errores de interpretación

Ejemplo:

if [[ "$nombre" == "admin" ]]; then
    echo "Usuario administrador"
fi

8. case: perfecto para menús o varias opciones

Sintaxis:

case $opcion in
    1) echo "Has elegido 1" ;;
    2) echo "Has elegido 2" ;;
    *) echo "Opción no válida" ;;
esac

Ejemplo real:

read -p "Elige opción (start/stop/status): " opcion

case $opcion in
    start) echo "Iniciando servicio" ;;
    stop) echo "Deteniendo servicio" ;;
    status) echo "Estado del servicio" ;;
    *) echo "Opción desconocida" ;;
esac

9. Práctica guiada (20–30 minutos)

9.1. Crear un script de comparaciones básicas

nano edad.sh
#!/bin/bash

read -p "Introduce tu edad: " edad

if [ $edad -lt 18 ]; then
    echo "Eres menor"
elif [ $edad -lt 65 ]; then
    echo "Eres adulto"
else
    echo "Eres senior"
fi

Ejecutar:

chmod +x edad.sh
./edad.sh

9.2. Comprobar si un archivo existe

nano comprueba.sh
#!/bin/bash

read -p "Archivo a comprobar: " archivo

if [ -f "$archivo" ]; then
    echo "Existe y es un archivo"
elif [ -d "$archivo" ]; then
    echo "Existe y es un directorio"
else
    echo "No existe"
fi

9.3. Crear un menú con case

nano menu.sh
#!/bin/bash

echo "1) Mostrar fecha"
echo "2) Mostrar usuarios"
echo "3) Salir"

read -p "Elige una opción: " op

case $op in
    1) date ;;
    2) who ;;
    3) echo "Saliendo..."; exit 0 ;;
    *) echo "Opción no válida" ;;
esac

10. Checklist del Día 2

  • Sabes usar if, elif, else
  • Comparas números con -lt, -ge, etc.
  • Comparas cadenas con = y !=
  • Compruebas archivos con -f, -d, -e
  • Sabes cuándo usar [[ ]]
  • Usas case para menús simples

Si está todo marcado → Día 2 superado.


11. Ejercicio sugerido

Crea un script llamado:

login.sh

Que:

  1. Pida un nombre de usuario
  2. Si es “admin”, muestre “Bienvenido administrador”
  3. Si es vacío → “No has introducido nombre”
  4. Para cualquier otro → “Acceso limitado”

Te prepara para los bucles del Día 3.


12. Día 2 completado

Ya tienes scripts que piensan y toman decisiones.
Mañana entramos en el corazón de la automatización:

👉 Día 3 – Bucles: for, while, until (y cómo procesar listas y ficheros línea a línea)

Este día será increíble.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies