Pruebas condicionales en Bash: if, then, else, elif

Share on facebook
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp

Contenidos

Bash Shell

Programar en Bash puede ser divertido a veces. Saber cómo separar tus if de tus else-if o elif, como se les llama en Bash, además puede ser divertido. Descubra cómo acertar con sus condicionales Bash.

Bash Conditionals: if, then, else, elif

Tan bueno como todos los lenguajes de codificación, existen condicionales – declaraciones condicionales que posibilitan probar una gama de situaciones. En la mayoría de los lenguajes de programación, un básico if La declaración permitiría probar el estado o el valor de una variable de programación dada. A modo de ejemplo, se podría probar si una variable está vacía o no.

Para obtener más información sobre las variables Bash, es factible que desee revisar nuestro post Funciones Bash y Variables locales.

Bash es un shell de Linux en toda regla y un lenguaje de programación completo. Además incluye muchas extensiones a las declaraciones condicionales más comunes dentro de su lenguaje de programación / scripting. A modo de ejemplo, uno puede probar la presencia de archivos, para ver si un grep -q declaración fue exitosa y así sucesivamente.

Al mismo tiempo, uno puede especificar declaraciones condicionales complejas, e inclusive subcapas dentro de la if etc. declaración condicional propiamente dicha. Esto hace que Bash sea muy adecuado para la manipulación / manipulación de big data, el análisis de texto y muchas otras tareas similares a DevOps.

Este post se centrará principalmente en obtener los condicionales correctos, usando if...then, else, y elif declaraciones. Un post futuro analizará condiciones de prueba más complejas, usando subcapas dentro de declaraciones condicionales, etc.

Prueba condicional de Bash: si … entonces … fi

Escribir una declaración condicional en Bash es fácil y sencillo. Inclusive puede escribirlos de forma directa en la línea de comando de Bash, sin utilizar un script:

if [ "1" == "1" ]; then echo 'true'; fi

Ejemplo simple de if en Bash

El resultado es cierto, como 1 partidos 1. Tenga en cuenta que la forma de probar la igualdad entre los ítems es utilizar == y no =. Este es el caso en muchos idiomas y, a menudo, se hace para evitar o separar claramente de la “asignación” (dicho de otra forma, determinar una variable en un valor dado).

Tenga en cuenta además que terminamos cada condicional if declaración con una terminación fi (el reverso de si) declaración. Esto nos posibilita especificar varias líneas después de entonces. then cláusula antes de terminar el posteriormente sección.

Prueba condicional de Bash: demás Y variables

Pongamos esto en un pequeño script, agreguemos un else sección y agregue algunas comprobaciones de variables.

Definimos test.sh como sigue:

#!/bin/bash

VAR1=1
VAR2=1

if [ "${VAR1}" == "${VAR2}" ]; then 
  echo 'true'
else 
  echo 'false'
fi

Posteriormente, hacemos que este pequeño script sea ejecutable emitiendo chmod +x test.sh que establece la bandera ejecutable para el test.sh texto.

Ejemplo de if en el script usando variables y una cláusula else

Dentro del guión que establecimos VAR1 y VAR2 al valor de 1. A continuación, emitimos una declaración if que compara las dos variables, y hacemos eco true si la comparación es válida, y false si la comparación fallaba. El resultado es un correcto true producción.

Prueba condicional de Bash: si Anidamiento y comprobaciones avanzadas

Podemos expandir el último ejemplo un poco más y verificar la desigualdad usando != en lugar de ==, agregue bucles anidados y use algunas comprobaciones de variables avanzadas nativas de Bash al mismo tiempo.

Definimos test2.sh como sigue:

#!/bin/bash

VAR1="${1}"
VAR2="${2}"

if [ ! -z "${VAR1}" -a ! -z "${VAR2}" ]; then
  if [ "${VAR1}" != "${VAR2}" ]; then 
    echo 'true'
  else 
    echo 'false'
  fi
else
  echo "Assert: Either VAR1 (value: '${VAR1}'), or VAR2 (value: '${VAR2}'), or both, are empty!"
fi

En este script, reemplazamos nuestros valores codificados de 1 para ambos VAR1 y VAR2 con dos variables especiales a saber ${1} y ${2}, que representan la primera y segunda opción / parámetro, pasado de la línea de comando al script. Hacemos que nuestro script sea ejecutable nuevamente y lo ejecutamos con varias combinaciones de alternativas incorrectas.

Una declaración if de desigualdad más compleja que también prueba variables de script

los -z el código significa chequear si un parámetro está vacío o no. Negamos el resultado (dicho de otra forma, el sí se convierte en no y el no se convierte en sí, o mejor dicho / mejor, verdadero se torna falso y falso se convierte en verdadero) a través de el uso de un signo de exclamación (!) en frente de -z cheque. Posteriormente además usamos un Y cláusula (dicho de otra forma, ambos lados de la Y cláusula tiene que probarse verdadera).

Dicho de otra forma, la forma en que podías leer el if [ ! -z "${VAR1}" -a ! -z "${VAR2}" ]; la línea en lenguaje natural es Tanto VAR1 como VAR2 no deben estar vacíos. Podemos ver que nuestras variables están siendo verificadas correctamente por esta declaración condicional, dado que cada vez que intentamos pasar solo una variable, o dos variables donde una está vacía, el programa salta a la else cláusula que informa sobre el uso incorrecto de nuestra opción de script.

En conclusión, dentro de la primera if declaración condicional, tenemos una secundaria (jerga informática: anidado) sentencia condicional. Esta declaración verifica nuestra desigualdad usando no es igual (!=). Efectivamente, cuando pasamos dos valores diferentes, a saber 1 y 2 para el script, el resultado es verdadero: estos números son desiguales.

Prueba condicional de Bash: elif

Cuando comience a desarrollar declaraciones más complejas y profundamente anidadas en Bash, pronto encontrará que hay un caso en el que se está ramificando cada vez más profundamente en el código anidado, y el código comienza a parecer más complejo debido a las múltiples capas de profundidad. A menudo, aún cuando no siempre, se puede usar un elif declaración en tales casos. A modo de ejemplo:

#!/bin/bash

if [ "${1}" -lt 2 ]; then
  echo "less than 2"
else
  if [ "${1}" -lt 4 ]; then
    echo "less than 4"
  else
    if [ "${1}" -lt 6 ]; then
      echo "less than 6"
    fi
  fi
fi

if [ "${1}" -lt 2 ]; then
  echo "less than 2"
elif [ "${1}" -lt 4 ]; then
  echo "less than 4"
elif [ "${1}" -lt 6 ]; then
  echo "less than 6"
fi

Habiendo definido este script como test3.sh, lo hacemos ejecutable y lo ejecutamos.

Ejemplo de declaración condicional elif con dos implementaciones diferentes

Los dos bloques de código hacen exactamente lo mismo: comprueban si el valor pasado como primera opción al script (1, 3 y 5 respectivamente) es menor que (-lt) Los valores 2, 4 y 6 en secuencia. Vemos que los dos bloques funcionan exactamente igual.

A pesar de esto, el segundo bloque de código, que emplea el uso de elif declaraciones (que además se pueden leer como si no declaraciones) en lugar de más … si bloques de instrucciones condicionales. El segundo bloque de código no solo es más corto, además es más limpio, más claro y más agradable a la vista. Tenga en cuenta que además puede combinar else y elif declaraciones en combinación, de forma anidada, etc.

Conclusión

Escribir código Bash es, fue y probablemente será durante bastante tiempo un ejercicio agradable para muchos. La creación de declaraciones condicionales bien elaboradas es una parte integral y común de esto. En este breve tutorial, analizamos if, then, else, elif y fi declaraciones. Usando las diversas declaraciones condicionales, podrá crear un código excelente y limpio. ¡Disfrutar!

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.