50% de descuento en todos los planes, por tiempo limitado. Desde $2.48/mo
Quedan 10 minutos
Servidores y SO

Sentencia If en Bash: sintaxis, variantes, casos de uso, comandos y mucho más

Pío Bodenmann By Pío Bodenmann 10 min de lectura Actualizado el 28 de enero de 2024
scripting en bash

En el scripting de shell, las sentencias if de Bash son fundamentales: permiten crear flujos de ejecución condicional según el contexto. En esencia, las sentencias if nos permiten tomar decisiones dentro de los scripts de Bash, evaluando factores como resultados de pruebas, entradas del usuario o estados del sistema. Son, básicamente, el mecanismo para navegar entre distintas posibilidades.

Al usar scripts en Bash, una sentencia if sigue una estructura específica. Normalmente comienza con el "ifpalabra clave «keyword», seguida de la condición que se debe evaluar, la «»entonces palabra clave, y uno o más comandos que se ejecutarán si la condición se cumple.

Para mayor flexibilidad, la sentencia if también puede incluir unelif" (else if), que entra en acción cuando la condición inicial es falsa. Permite evaluar una condición adicional y actuar en consecuencia. Además, la instrucción if puede incluir un bloque "else" opcional, que se ejecuta cuando ninguna de las condiciones se cumple."

Al combinar sentencias if con otros comandos de Bash y características del scripting de shell, los programadores pueden crear scripts avanzados capaces de automatizar tareas y procesos complejos. Sigue leyendo para aprender más sobre la sentencia if en Bash: su sintaxis, casos de uso y ejemplos prácticos.

Sintaxis del condicional if en Bash

La sintaxis de Bash define las reglas que rigen la estructura y la gramática de los comandos y scripts escritos en el lenguaje del shell Bash. Incluye una variedad de construcciones y elementos, como:

  • Comandos: Son los programas ejecutables o comandos integrados del shell que se usan para realizar tareas concretas. La mayor parte del tiempo que dediques a programar en Bash lo pasarás trabajando con estas líneas.
  • Argumentos: Son valores que se pasan a los comandos para especificar opciones, parámetros o datos de entrada. Piénsalos como condiciones que definen cómo debe ejecutarse un comando.
  • Variables: Son símbolos que representan valores que se pueden asignar, manipular o usar en expresiones. Se usan habitualmente para determinar los valores con los que trabajan tanto los comandos como los argumentos.
  • Redirección: Este es el proceso de redirigir la entrada, la salida o los errores hacia o desde archivos, dispositivos u otros comandos. Sin esto, existe una alta probabilidad de que tus comandos apunten al destino equivocado y arruinen tu código.
  • Tuberías: Este mecanismo conecta la salida de un comando con la entrada de otro. Se usa habitualmente para construir líneas de comandos condicionales complejas en programas grandes y para encadenar comandos entre sí.
  • Estructuras de control: Son construcciones que controlan el flujo de ejecución de comandos, como bucles, condicionales y funciones. Entender las estructuras de control es clave para crear líneas de comandos avanzadas y añade una capa extra de profundidad a tu código.
  • Comentarios: Son anotaciones que el intérprete de comandos ignora y que sirven para documentar el código o explicar su funcionamiento. Son puntos de referencia fundamentales a la hora de analizar y depurar, especialmente en proyectos en equipo.

La sintaxis de Bash debe escribirse correctamente para que el shell pueda interpretar y ejecutar comandos. Los errores de sintaxis pueden provocar mensajes de error o un comportamiento inesperado.

Aquí puedes ver el condicional if de Bash en acción:

if condition
then
   command1
   command2
   ...
   commandN
elif condition2
then
   commandA
   commandB
   ...
   commandC
else
   commandX
   commandY
   ...
   commandZ
fi

En este caso, la «condición» hace referencia a una prueba que devuelve un resultado verdadero o falso. Cuando la condición es verdadera, se ejecutan los comandos especificados tras la palabra clave «then». Si en cambio queremos evaluar una condición adicional, podemos usar la palabra clave «elif», que nos permite contemplar otra posibilidad. Si ninguna de las condiciones se cumple, entran en juego los comandos especificados tras la palabra clave «else», que actúa como plan de contingencia. Por último, para indicar el final del bloque if, se utiliza la palabra clave «fi».

¿Cómo funcionan las sentencias Bash?

En los scripts de Bash, la instrucción if es fundamental para controlar el flujo del script según el resultado de una condición. Su función es evaluar esa condición y, si se cumple, ejecutar un conjunto de comandos determinado.

Veamos cómo funciona en la práctica un condicional if dentro de un script de Bash. El script evalúa la condición del if. Si la condición es verdadera, se ejecutan los comandos del bloque "then".

Si la condición es falsa, el script pasa a evaluar las condiciones elif adicionales. Si alguna de ellas es verdadera, se ejecutan los comandos del bloque elif correspondiente. Si ninguna condición del if ni de los elif es verdadera, el script ejecuta los comandos del bloque else, siempre que exista uno.

En esencia, el if permite tomar decisiones dentro de un script: el flujo de ejecución sigue un camino u otro según el resultado de la prueba. Esa prueba puede basarse en distintos factores, como el resultado de un comando o el valor de una variable.

El condicional if en Bash: ejemplos prácticos

Dejemos la teoría y veamos cómo usar un condicional if de Bash en el desarrollo real. El siguiente ejemplo muestra su funcionamiento:

#!/bin/bash
# set a variable
x=5
# evaluate the variable
if [ $x -gt 4 ]
then
  echo "x is greater than 4."
else
  echo "x is less than or equal to 4."
fi

En este ejemplo, el if evalúa el valor de la variable x. Si x es mayor que 4, el script imprime "x is greater than 4". Si x es menor o igual a 4, imprime "x is less than or equal to 4".

Ahora que tienes una base sólida sobre el condicional if de Bash y su funcionamiento, profundicemos en sus variantes y comandos relacionados: if básico, if anidado, if-else, if-elif-else y case, uno a uno.

If básico

Empecemos por el if básico en Bash. Comprueba si una condición es verdadera y, si lo es, ejecuta el bloque de código correspondiente. Su sintaxis es la siguiente:

if [ condition ]
then
  commands
fi

En este caso, el script evalúa la condición. Si es verdadera, ejecuta los comandos especificados. Si es falsa, pasa al siguiente comando sin ejecutar el bloque "then".

If anidado

Un if anidado es, como su nombre indica, un if dentro de otro if. Esta estructura permite realizar comprobaciones más complejas dentro de un script. Aquí tienes un ejemplo:

if [ condition1 ]
then
  if [ condition2 ]
  then
    commands
  fi
fi

Como puedes ver, el script evalúa primero condition1. Si es verdadera, evalúa condition2. Si condition2 también es verdadera, se ejecutan los comandos correspondientes.

If-else

El if-else de Bash permite tomar decisiones en función de si una condición es verdadera o falsa, lo que da lugar a una ejecución de código más flexible. Así es su estructura:

if [ condition ]
then
  commands1
else
  commands2
fi

Con esta construcción, si la condición se cumple, el script ejecuta "commands1". Si no se cumple, ejecuta "commands2".

If-elif-else

Cuando necesitas evaluar varias condiciones y actuar según cada resultado, el if-elif-else es la herramienta adecuada. Observa la siguiente sintaxis:

if [ condition1 ]
then
  commands1
elif [ condition2 ]
then
  commands2
else
  commands3
fi

El script evalúa primero condition1. Si es verdadera, ejecuta commands1. Si no lo es, pasa a evaluar condition2. Si condition2 es verdadera, ejecuta commands2. Si ninguna de las dos condiciones se cumple, ejecuta commands3.

Case

Bash incluye el case, equivalente al switch de otros lenguajes de programación. Permite ejecutar distintos bloques de comandos según el valor de una variable. Fíjate en su estructura:

case expression in
  pattern1)
    commands1;;
  pattern2)
    commands2;;
  pattern3)
    commands3;;
*)
default commands;;
esac

El script evalúa la variable expression y la compara con cada patrón. Cuando encuentra una coincidencia, ejecuta los comandos correspondientes. Si no encuentra ninguna, ejecuta los comandos por defecto. El patrón asterisco (*) actúa como comodín y captura cualquier valor no contemplado anteriormente.

Operadores lógicos en Bash

Los operadores lógicos son una parte fundamental del condicional if en Bash. Permiten combinar varias condiciones y tomar decisiones en función del resultado conjunto. Bash incluye tres operadores lógicos principales para usar en condicionales if. A continuación tienes ejemplos de cada uno.

  • Bash AND (&&):
if [ $age -ge 18 ] && [ "$citizen" == "yes" ]; then
  echo "You meet the criteria for voting."
fi
  • OR lógico (||):
if [ "$status" == "active" ] || [ "$role" == "admin" ]; then
  echo "Access granted."
fi
  • Distinto de:
if(( ! $a == "true" )) then 
  echo "a" was initially false. 
else
  echo "a" was initially true. 
fi

Conclusión

En esta entrada del blog ofrecimos una guía introductoria sobre las sentencias if en Bash y cómo utilizarlas. También vimos cómo pueden hacer que tu código sea más limpio y funcional. Usando estas sentencias condicionales de forma efectiva, puedes crear scripts potentes capaces de manejar tareas complejas y tomar decisiones.

¿Eres nuevo en el mundo de Linux? ¡Deja que te guiemos en este apasionante camino! Nuestro Linux VPS es el punto de partida ideal para quienes empiezan: sencillo sin renunciar a la potencia. Con interfaces intuitivas y soporte experto, aprovechar las capacidades de un servidor Linux es más fácil que nunca. Ya sea que estés montando un sitio web, probando aplicaciones o explorando el vasto mundo de Linux, nuestro VPS Linux te ofrece un entorno seguro y sin complicaciones. Da tus primeros pasos en el universo Linux con confianza: consulta hoy nuestras opciones de VPS Linux y comienza tu aventura.

Hosting VPS Linux

Consigue un VPS Linux económico o premium para alojar tu sitio web o escritorio remoto, al precio más competitivo del mercado. VPS sobre Linux KVM para mayor eficiencia, con hardware potente y almacenamiento NVMe SSD para mayor velocidad.

Leer más

Preguntas frecuentes

¿Puedo usar operadores lógicos en sentencias if de Bash?

Sí, puedes usar operadores lógicos como '&' y '||' en sentencias if de Bash. Por ejemplo, if [ $var -gt 0 ] && [ $var -lt 10 ]; then … ejecutará el bloque de código si $var es mayor que 0 y menor que 10.

¿Puedo usar múltiples condiciones en una sola sentencia if?

Sí, puedes combinar varias condiciones en una misma sentencia if usando operadores lógicos como -a (AND) o -o (OR). Por ejemplo, if [ $var -gt 0 -a $var -lt 10 ]; then … ejecutará el bloque de código si $var es mayor que 0 Y menor que 10.

¿Puedo usar sustitución de comandos en sentencias if de Bash?

Sí, puedes usar la sustitución de comandos en sentencias if de Bash encerrando el comando en $() o comillas invertidas (). Por ejemplo, if [ $(whoami) == "root" ]; then … ejecutará el bloque de código si el usuario actual es root.

[[ vs [ vs ( vs ((: ¿Cuál es la diferencia entre estos operadores de Bash?

En resumen: [[ se usa para pruebas condicionales avanzadas. [ se usa para pruebas condicionales básicas. ( se usa para agrupar subshells y ejecutar comandos. (( se usa para operaciones aritméticas.

 

Compartir

Más del blog

Sigue leyendo.

Mejores aplicaciones autoalojadas que puedes usar con Cosmos Cloud, imagen de portada con paneles de apps alrededor de un panel de Cosmos.
Servidores y SO

Las mejores aplicaciones autoalojadas para usar con Cosmos Cloud: archivos, multimedia, contraseñas, automatización y mucho más

Maybe ya tienes Cosmos Cloud en marcha y quieres saber qué aplicaciones encajan bien con él, o quizás aún no te has decidido por Cosmos y solo quieres ver si se adapta a tu flujo de trabajo

Nick PlataNick Plata 16 min de lectura
Portainer vs Cosmos Cloud para gestionar aplicaciones Docker: portada con diagrama de configuración híbrida y bloques de operaciones vs acceso en neón.
Servidores y SO

Portainer vs Cosmos Cloud: cuál encaja mejor para gestionar aplicaciones Docker

Si ya conoces Docker y solo quieres la forma más limpia de gestionar una pila de aplicaciones en crecimiento, aquí va la respuesta directa sobre Portainer vs Cosmos Cloud. Portainer es la mejor opción para el contro

Nick PlataNick Plata 14 min de lectura
Gráfico de Cosmos Cloud vs CasaOS vs Umbrel con tres rutas de autoalojamiento dentro de una red cloud abstracta.
Servidores y SO

Cosmos Cloud vs CasaOS vs Umbrel: ¿cuál encaja con tu configuración?

La respuesta corta: CasaOS sigue siendo el punto de partida más sencillo, Umbrel ofrece la experiencia más cuidada y seleccionada, y Cosmos Cloud tiene más sentido cuando necesitas un control más fino sobre el domi

Nick PlataNick Plata 11 min de lectura

¿Listo para desplegar? Desde 2,48 $/mes.

Cloud independiente, desde 2008. AMD EPYC, NVMe, 40 Gbps. 14 días de garantía de devolución.