Declaración de Bash 'if else': Tutorial y ejemplos

Usando la instrucción if… else en Bash para la ejecución de código condicional.

Bash (Bourne Again Shell) es un símbolo del sistema de shell y un lenguaje de secuencias de comandos en los sistemas operativos GNU / Linux. Es el shell predeterminado para la mayoría de las distribuciones de Linux.

Las declaraciones condicionales son vitales en cualquier lenguaje de programación, tanto compiladas como escritas. Permiten al usuario ejecutar un fragmento de código basado en una condición predefinida, que es una de las bases de la lógica de programación. En este artículo, aprenderemos a utilizar el si ... si no declaración condicional en Bash.

Introducción

El si ... si no La declaración en Bash permite al usuario manipular el flujo de código en función de las condiciones. El usuario puede especificar bloques de código separados para que se ejecuten, solo uno de los cuales finalmente se ejecutará durante el tiempo de ejecución, según la condición correspondiente que se cumpla.

Tenga en cuenta que se pueden especificar más de dos condiciones, para las cuales elif se puede utilizar una declaración. El usuario puede dar cualquier número de condiciones usando elif, y finalmente una condición predeterminada usando demás cuadra. Veamos más sobre esto en la sintaxis y los ejemplos a continuación.

Sintaxis general

La sintaxis general para si ... si no declaración en Bash es:

si entonces  demás  fi

Aquí, si el satisface, es decir, si devuelve 0 (éxito), entonces se ejecuta el bloque de código 1. Si la condición no devuelve 0, es decir, devuelve un estado de falla, entonces se ejecuta el bloque de código 2. El si ... si no el bloque termina con un fi declaración.

Para múltiples bloques correspondientes a múltiples condiciones,elif se utiliza:

si entonces  elif entonces  elif entonces  ... ... demás  fi

Aquí, las condiciones se verifican en orden y se ejecuta el bloque de código de la primera condición que devuelve el estado 0 (éxito). P.ej. Si devuelve un estado distinto de cero (falla), luego está chequeado. Si devuelve el estado 0, es ejecutado. Después de esto, no se verifican más condiciones y la ejecución del código continúa en el código después de la fi declaración.

Si ninguna de las condiciones devuelve el estado 0, en el bloque else se ejecuta. Tenga en cuenta que el bloque else es opcional. Si no se cumple ninguna condición, así como tampoco demás se especifica el bloque, no se ejecutará ningún bloque de código condicional y la ejecución del código continuará en el código después de la fi declaración, como se muestra en el diagrama de flujo a continuación.

Tenga en cuenta que el entonces La declaración se debe usar solo después de Si y elif declaraciones y no se requiere después de la demás declaración.

Ejemplos de

Para ejecutar un bloque de código si una variable tiene un valor particular:

x = 0 si [$ x -eq 0] entonces echo "El valor de X es 0" si no echo "El valor de X no es 0" fi

Para comprobar varios valores:

x = 2 if [$ x -eq 0] then echo "El valor de X es 0" elif [$ x -eq 1] then echo "El valor de X es 1" elif [$ x -eq 2] then echo "Valor de X es 2 "else echo" El valor de X no es 0 "fi

Las condiciones pueden ser cualquier comando de Linux. El bloque de código correspondiente se ejecutará si el comando se ejecuta correctamente.

si npm -v entonces echo "NPM presente en el sistema" de lo contrario sudo apt install npm fi

En el ejemplo anterior, desde npm no estaba instalado en el sistema, el comando npm -v devolvió un estado distinto de cero. Por lo tanto, la ejecución del código entró en el demás block, donde instalamos npm usando apto gerente de empaquetación. Como podemos ver, me pidió que ingresara la contraseña y comenzó la instalación de npm.

También podemos anidar otro si ... si no bloque dentro de un Si, demás o elif cuadra:

x = 0 y = 1 si [$ x -eq 0] entonces echo "X es 0" si [$ y -eq 1] entonces echo "Y es 1" si no echo "Y no es 1" si si no echo "X es no 0 "fi

Esto es útil cuando se debe verificar un conjunto separado de condiciones una vez que se cumple una condición inicial.

Por ejemplo, el siguiente código intenta instalar un software de servidor web:

si nginx -v entonces echo "NGINX ya está instalado". de lo contrario, si sudo apt install nginx, repita "Instalación exitosa de NGINX". elif sudo apt install apache2 y luego repita "Instalación exitosa de APACHE2". else echo "No se puede instalar ningún software web". fi

El código primero verifica si Nginx ya está instalado en el sistema. Si es así, solo muestra un mensaje y sale. Si no es así, intenta instalar Nginx.

Si por alguna razón, Nginx no se pudo instalar en el sistema desde el paquete, intenta instalar Apache2. Si incluso Apache2 da un error durante la instalación, sale y muestra un mensaje de que no se pudo instalar ningún software.

De manera similar, un bloque anidado se puede utilizar dentro de un elif bloque también.

Ejecutando si ... si no: Scripts y línea de comandos

Similar a cualquier código Bash, el si ... si no La declaración se puede utilizar en el shell Bash directamente o desde un archivo de script de shell ejecutable. Una vez que el intérprete de Bash encuentra un Si, demás o elif declaración, continúa el shell para permitir que el usuario ingrese el bloque de código.

El usuario también puede guardar este código en un archivo de secuencia de comandos y ejecutar el archivo de secuencia de comandos.

El #! / bin / bash at the start especifica el intérprete que se utilizará cuando se ejecute el archivo. Aunque Bash es el shell más utilizado hoy en día, algunos usuarios prefieren shells como zsh, que deben especificarse en lugar de bash al comienzo de este archivo.

Para otorgar permisos de ejecución para este archivo, ejecute:

chmod + x test.sh

Finalmente, para ejecutar el archivo, ejecute:

./test.sh

Conclusión

Similar a cualquier lenguaje de programación, si ... si no declaración es una característica fundamental de Bash. Aprender su uso es de gran ayuda para escribir guiones básicos y avanzados.