if, then, else, elif

Bash Shell

La programación de Bash a veces puede ser divertida. Saber cómo separar tus ifs de tus otros ifs o elifs como se les llama en Bash también puede ser divertido. Descubra cómo corregir sus condicionales Bash.

→ Índice de contenidos

Bash Conditionals: if, then, else, elif

En todos los lenguajes de programación, existen condicionales: declaraciones condicionales que le permiten probar una variedad de situaciones. En la mayoría de los lenguajes de programación, un básico if le permitiría probar el estado o valor de una determinada variable de programación. Por ejemplo, puede comprobar si una variable está vacía o no.

Para obtener más información sobre las variables de Bash, es posible que desee consultar nuestro artículo sobre funciones de Bash y variables locales.

Bash es un shell de Linux real y un lenguaje de programación completo. También incluye muchas extensiones a las declaraciones condicionales más comunes dentro de su lenguaje de programación / scripting. Por ejemplo, puede buscar archivos para ver si un grep -q declaración fue exitosa y así sucesivamente.

Además, las declaraciones condicionales complejas e incluso subcapas se pueden especificar directamente dentro del archivo if etc. declaración condicional en sí. Esto hace que Bash sea muy adecuado para la manipulación / disputa de big data, análisis de texto y muchas otras tareas similares a DevOps.

Este artículo se centrará principalmente en cómo obtener los condicionales correctos, utilizando if...then, else, es elif declaraciones. Un artículo futuro analizará condiciones de prueba más complejas, utilizando subcapas dentro de declaraciones condicionales, etc.

Prueba de golpe condicional: si ... entonces ... fi

Escribir una declaración condicional en Bash es fácil y sencillo. Incluso puede escribirlos directamente en la línea de comandos de Bash, sin usar 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 de los elementos to es usar == y no =. Este es el caso en muchos idiomas y a menudo se hace para evitar, o separar claramente, la "asignación" (es decir, establecer una variable en un valor dado).

También tenga en cuenta que terminamos cada condicional if declaración con terminación fi (lo contrario a Yo) declaración. Esto nos permite especificar más líneas después de eso. then cláusula antes de finalizar el luego sección.

Prueba de golpe condicional: otro Y variables

Pongamos esto en un pequeño script ahora, agreguemos un archivo else sección y agregue algunos controles variables.

Definimos test.sh como sigue:

#!/bin/bash

VAR1=1
VAR2=1

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

Entonces, hagamos que este pequeño script sea ejecutable emitiendo chmod +x test.sh que establece la bandera ejecutable para test.sh guión.

Ejemplo de if en script que usa variables y otra cláusula

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

Prueba de golpe condicional: Yo Anidamiento y controles avanzados

Podemos expandir el último ejemplo más y verificar la desigualdad usando != en vez de ==, agregue bucles anidados y use algunos controles de variables avanzados nativos 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, hemos reemplazado nuestros valores codificados de 1 para ambos VAR1 es VAR2 con dos variables especiales a saber ${1} es ${2}, Lo que significa 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 opciones incorrectas.

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

los -z el código significa comprueba si un parámetro está vacío o no. Negamos el resultado (es decir, sí se convierte en no y no se convierte en sí, o mejor / mejor verdadero se vuelve falso y falso se vuelve verdadero) usando un signo de exclamación (!) en frente de -z cheque. Entonces también usamos un archivo ES cláusula (es decir, ambos lados de la ES la cláusula debe ser verdadera).

En otras palabras, la forma en que puede leer el archivo if [ ! -z "${VAR1}" -a ! -z "${VAR2}" ]; la línea del lenguaje natural es Tanto VAR1 como VAR2 no deben estar vacíos. Podemos ver que nuestras variables son verificadas correctamente por esta declaración condicional, ya que cada vez que intentamos pasar solo una variable, o dos variables, una de las cuales está vacía, el programa salta a else cláusula que informa nuestro mal uso de las opciones de script.

Finalmente, 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 el mísmo (!=). Efectivamente, cuando pasamos dos valores diferentes, a saber 1 es 2 para el script, el resultado es verdadero: estos números no son iguales.

Prueba de golpe condicional: elif

A medida que 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 los múltiples niveles de profundidad. A menudo, aunque no siempre, puede utilizar un elif declaración en estos casos. Por ejemplo:

#!/bin/bash

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

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

Después de definir este script como test3.sh, lo hacemos ejecutable y lo ejecutamos.

ejemplo de una 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) valores 2, 4 y 6 en secuencia. Vemos que los dos bloques funcionan exactamente de la misma manera.

Sin embargo, el segundo bloque de código, que emplea el uso de elif declaraciones (que también se pueden leer como de lo contrario si declaraciones) en lugar de otro..si bloques de declaraciones condicionales. El segundo bloque de código no solo es más corto, también es más limpio, claro y más fácil de ver. Tenga en cuenta que también puede combinar else es elif declaraciones en combinación, anidadas, etc.

Conclusión

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir Change privacy settings