Bash Scripting: Tutorial Completo de Sentencias ‘if’

Bash Scripting: Tutorial Completo de Sentencias ‘if’

Las sentencias if son un elemento fundamental en los scripts de Bash, ya que permiten a tu script tomar decisiones basadas en condiciones específicas. Con if, puedes crear scripts más flexibles e inteligentes que puedan responder a diferentes escenarios.

En este tutorial, exploraremos a fondo las sentencias if en Bash, desde los conceptos básicos hasta las estructuras avanzadas. Aprenderás a utilizar if para comparar valores, comprobar la existencia de archivos, ejecutar comandos condicionalmente, y mucho más.

Sintaxis Básica de las Sentencias if

La estructura básica de una sentencia if en Bash es la siguiente:

bash
if [ condición ]; then
# Comandos a ejecutar si la condición es verdadera
fi

  • if: Esta palabra clave inicia la sentencia if.
  • [ condición ]: Esta es la condición que se va a evaluar. La condición se coloca entre corchetes [] y puede ser cualquier expresión válida de Bash.
  • then: Esta palabra clave indica que los comandos siguientes se ejecutarán solo si la condición es verdadera.
  • fi: Esta palabra clave marca el final de la sentencia if.

Ejemplo:

bash
if [ $NUMERO -gt 10 ]; then
echo "El número es mayor que 10."
fi

En este ejemplo, la condición $NUMERO -gt 10 compara el valor de la variable $NUMERO con el número 10. Si $NUMERO es mayor que 10, el comando echo "El número es mayor que 10." se ejecutará.

La Instrucción test para Evaluar Condiciones

La instrucción test es una herramienta fundamental para crear condiciones en las sentencias if. La instrucción test puede realizar comparaciones de valores, comprobar la existencia de archivos, verificar permisos y mucho más.

Sintaxis de la instrucción test:

bash
test condición

O, de forma equivalente:

bash
[ condición ]

Operadores de Comparación:

LEER:  Crear un Bash Array Multi-Línea para Script de Actualización de Hosts

| Operador | Descripción | Ejemplo |
|—|—|—|
| -eq | Igualdad | [ $NUMERO -eq 10 ] |
| -ne | Desigualdad | [ $NUMERO -ne 10 ] |
| -gt | Mayor que | [ $NUMERO -gt 10 ] |
| -ge | Mayor o igual que | [ $NUMERO -ge 10 ] |
| -lt | Menor que | [ $NUMERO -lt 10 ] |
| -le | Menor o igual que | [ $NUMERO -le 10 ] |

Operadores de Existencia y Permisos:

| Operador | Descripción | Ejemplo |
|—|—|—|
| -e | Existe el archivo o directorio | [ -e archivo.txt ] |
| -f | Existe el archivo (no un directorio) | [ -f archivo.txt ] |
| -d | Existe el directorio | [ -d directorio ] |
| -r | El archivo es legible | [ -r archivo.txt ] |
| -w | El archivo es escribible | [ -w archivo.txt ] |
| -x | El archivo es ejecutable | [ -x archivo.txt ] |

Ejemplo:

bash
if [ -f archivo.txt ]; then
echo "El archivo 'archivo.txt' existe."
fi

Este ejemplo comprueba si el archivo archivo.txt existe. Si el archivo existe, se mostrará el mensaje «El archivo ‘archivo.txt’ existe.»

Indentación para Mayor Legibilidad

La indentación es crucial para la legibilidad del código. A pesar de que Bash no requiere indentación, es una buena práctica para organizar las sentencias if y hacer que el código sea más fácil de entender.

Ejemplo de código indentado:

bash
if [ $NUMERO -gt 10 ]; then
echo "El número es mayor que 10."
echo "Se ejecutarán otros comandos."
fi

Sentencias if Anidadas

Las sentencias if pueden anidarse unas dentro de otras para crear estructuras de decisión más complejas.

Ejemplo:

bash
if [ $NUMERO -gt 10 ]; then
echo "El número es mayor que 10."
if [ $NUMERO -gt 20 ]; then
echo "El número es mayor que 20."
fi
fi

La Sentencia else para Ejecutar Comandos en Caso de Condición Falsa

La sentencia else se utiliza para ejecutar comandos cuando la condición if es falsa.

Sintaxis:

bash
if [ condición ]; then
# Comandos a ejecutar si la condición es verdadera
else
# Comandos a ejecutar si la condición es falsa
fi

Ejemplo:

LEER:  Amplificador de Base Común: Funcionamiento y Aplicaciones

bash
if [ $NUMERO -gt 10 ]; then
echo "El número es mayor que 10."
else
echo "El número no es mayor que 10."
fi

La Sentencia elif para Comprobar Condiciones Adicionales

La sentencia elif (abreviatura de «else if») se utiliza para comprobar condiciones adicionales si las anteriores fueron falsas.

Sintaxis:

bash
if [ condición1 ]; then
# Comandos a ejecutar si la condición1 es verdadera
elif [ condición2 ]; then
# Comandos a ejecutar si la condición2 es verdadera
else
# Comandos a ejecutar si todas las condiciones anteriores son falsas
fi

Ejemplo:

bash
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."
fi

Operadores Booleanos && (Y) y || (O)

Los operadores booleanos && (y) y || (o) se pueden usar para combinar condiciones en las sentencias if.

  • && (Y): Ambas condiciones deben ser verdaderas para que la condición completa sea verdadera.
  • || (O): Al menos una condición debe ser verdadera para que la condición completa sea verdadera.

Ejemplo:

«`bash
if [ $NUMERO -gt 10 ] && [ $NUMERO -lt 20 ]; then
echo «El número está entre 10 y 20.»
fi

if [ $NUMERO -eq 10 ] || [ $NUMERO -eq 20 ]; then
echo «El número es 10 o 20.»
fi
«`

La Sentencia case para Comparaciones con Patrones

La sentencia case ofrece una forma alternativa de comprobar condiciones, especialmente útil cuando se necesita comparar una variable con varios patrones.

Sintaxis:

bash
case $VARIABLE in
patrón1)
# Comandos a ejecutar si $VARIABLE coincide con patrón1
;;
patrón2)
# Comandos a ejecutar si $VARIABLE coincide con patrón2
;;
*)
# Comandos a ejecutar si $VARIABLE no coincide con ningún patrón
;;
esac

  • case $VARIABLE in: Inicia la sentencia case y especifica la variable a comparar.
  • patrón1) ... ;;: Define un patrón. Si $VARIABLE coincide con patrón1, los comandos entre ) y ;; se ejecutan.
  • *) ... ;;: El patrón * es un comodín que coincide con cualquier valor. Se utiliza como «else» para los casos que no coincidan con otros patrones.
  • esac: Marca el final de la sentencia case.

Ejemplo:

LEER:  SAS Tutorial: Guía Completa para el Análisis de Datos con SAS

bash
case $DIA in
"Lunes")
echo "Es Lunes, el inicio de la semana."
;;
"Viernes")
echo "Es Viernes, el final de la semana."
;;
*)
echo "Es otro día de la semana."
;;
esac

Resumen de Conceptos Clave

En este tutorial, hemos explorado a fondo las sentencias if en Bash, incluyendo:

  • Sintaxis básica de las sentencias if.
  • La instrucción test para evaluar condiciones.
  • Indentación para mejorar la legibilidad del código.
  • Sentencias if anidadas.
  • La sentencia else para ejecutar comandos cuando la condición if es falsa.
  • La sentencia elif para comprobar condiciones adicionales.
  • Operadores booleanos && (y) y || (o) para combinar condiciones.
  • La sentencia case para comparar una variable con varios patrones.

Práctica y Planificación

Para escribir scripts más complejos y legibles, es importante:

  • Planificar: Antes de escribir un script, piensa en los pasos que debe realizar y las condiciones que se deben evaluar.
  • Indentar: La indentación facilita la lectura y el mantenimiento del código.
  • Probar: Prueba tu script con diferentes entradas para asegurarte de que funciona como se espera.

Las sentencias if son herramientas esenciales en el scripting de Bash. Con la práctica y la comprensión de los conceptos que se han presentado en este tutorial, podrás crear scripts más poderosos y versátiles que puedan responder a diferentes escenarios y necesidades.