Condicionales
Condicionales en Bash
Los condicionales permiten ejecutar código solo si se cumple una condición.
En Bash se usan principalmente con if, elif y else.
Estructura básica de if
if [ condición ]; then
comandos
fi
⚠️ Los espacios son obligatorios:
- Espacio después de
[ - Espacio antes de
]
❌ Incorrecto:
if [edad -gt 18]; then
✅ Correcto:
if [ edad -gt 18 ]; then
Comparadores numéricos
Se usan con números enteros.
| Operador | Significado |
|---|---|
-eq |
igual |
-ne |
distinto |
-gt |
mayor que |
-ge |
mayor o igual |
-lt |
menor que |
-le |
menor o igual |
Ejemplo: comprobar edad
#!/bin/bash
read -p "Introduce tu edad: " edad
if [ "$edad" -ge 18 ]; then
echo "Eres mayor de edad"
else
echo "Eres menor de edad"
fi
Comparadores de cadenas (strings)
| Operador | Significado |
|---|---|
= |
igual |
!= |
distinto |
-z |
cadena vacía |
-n |
cadena no vacía |
Ejemplo: comprobar nombre
#!/bin/bash
read -p "Introduce tu nombre: " nombre
if [ "$nombre" = "Ana" ]; then
echo "Hola Ana"
else
echo "No te llamas Ana"
fi
Comprobar si una cadena está vacía
if [ -z "$nombre" ]; then
echo "No has introducido ningún nombre"
fi
⚠️ Siempre pon las variables entre comillas para evitar errores.
Operadores booleanos
Sirven para combinar condiciones.
AND (Y lógico)
condición1 && condición2
o dentro de [:
if [ condición1 ] && [ condición2 ]; then
OR (O lógico)
condición1 || condición2
Ejemplo con AND
#!/bin/bash
read -p "Edad: " edad
read -p "Tiene carnet (si/no): " carnet
if [ "$edad" -ge 18 ] && [ "$carnet" = "si" ]; then
echo "Puedes conducir"
else
echo "No puedes conducir"
fi
Ejemplo con OR
#!/bin/bash
read -p "Introduce una letra: " letra
if [ "$letra" = "a" ] || [ "$letra" = "e" ]; then
echo "Es una vocal"
else
echo "No es una vocal"
fi
elif (else if)
Permite evaluar varias condiciones.
#!/bin/bash
read -p "Nota: " nota
if [ "$nota" -ge 9 ]; then
echo "Excelente"
elif [ "$nota" -ge 5 ]; then
echo "Aprobado"
else
echo "Suspenso"
fi
Condiciones sobre archivos
Muy comunes en Bash.
| Operador | Significado |
|---|---|
-f |
existe y es archivo |
-d |
existe y es directorio |
-e |
existe |
-r |
tiene permiso de lectura |
-w |
escritura |
-x |
ejecución |
Ejemplo: comprobar archivo
archivo="datos.txt"
if [ -f "$archivo" ]; then
echo "El archivo existe"
else
echo "El archivo no existe"
fi
Alternativa moderna: [[ ]]
Es más segura y flexible que [ ].
if [[ "$nombre" == "Ana" ]]; then
echo "Hola Ana"
fi
Ventajas:
- Menos problemas con espacios
- Permite patrones (
*,?)
🧠 Resumen rápido
if,elif,elsecontrolan el flujo- Comparadores numéricos:
-eq,-gt,-lt, etc. - Comparadores de cadenas:
=,!=,-z - Booleanos:
&&(AND),||(OR) [[ ]]es preferible a[ ]
Para saber más:
https://atareao.es/tutorial/scripts-en-bash/condicionales-en-bash/