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 Si ninguna de las condiciones devuelve el estado 0, Tenga en cuenta que el Para ejecutar un bloque de código si una variable tiene un valor particular: Para comprobar varios valores: Las condiciones pueden ser cualquier comando de Linux. El bloque de código correspondiente se ejecutará si el comando se ejecuta correctamente. En el ejemplo anterior, desde También podemos anidar otro 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: 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 Similar a cualquier código Bash, el 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 Para otorgar permisos de ejecución para este archivo, ejecute: Finalmente, para ejecutar el archivo, ejecute: Similar a cualquier lenguaje de programación, 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. 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.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
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
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
si npm -v entonces echo "NPM presente en el sistema" de lo contrario sudo apt install npm fi
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.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
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
elif
bloque también.Ejecutando
si ... si no
: Scripts y línea de comandossi ... 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.#! / 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.chmod + x test.sh
./test.sh
Conclusió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.