GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo usar declaraciones condicionales en Bash Scripts

En bash scripting, las declaraciones condicionales ayudan a verificar si una condición específica es verdadera o falsa. Cuando la condición es verdadera, el script de shell ejecuta o ejecuta un bloque de código estipulado por el script. De lo contrario, el script omite la ejecución del código y salta a la siguiente instrucción condicional.

En bash scripting, las declaraciones condicionales incluyen si , if-else , if-elif-else y if anidado declaraciones. En esta guía, exploraremos cómo se utilizan estas declaraciones condicionales en la ejecución de scripts.

La sentencia if

En su forma más simple, la declaración 'si' toma la siguiente sintaxis.

if [[ conditional_statement ]]

then

 command 

fi

La instrucción condicional if comienza con if palabra clave. Esto es seguido por una declaración condicional que luego es seguida por entonces palabra clave que precede al comando que se ejecutará si la declaración condicional es verdadera.

Entonces, si la condición_declaración es verdadero, entonces el comando es ejecutado. Si se evalúa como Falso, no sucede nada y el comando se ignora por completo y el script finaliza.

Tomemos un ejemplo de una secuencia de comandos bash que comprueba si una puntuación proporcionada es superior a 80.

$ vim check_score.sh

Copie y pegue el script.

#!/bin/bash

echo -n "Please Enter a score: "

read score

if [[ $score -gt 80 ]]

then

 echo "You have passed the exam!"

fi

Tome nota cuidadosa de la sangría. Asigne permisos de ejecución utilizando chmod comando de la siguiente manera:

$ chmod +x check_score.sh

Luego ejecute el script.

$ ./check_score.sh

Si ingresa un valor mayor que 80, la declaración condicional se cumple y el mensaje de eco se imprime en la salida estándar

Sin embargo, si el valor proporcionado para la puntuación es inferior a 80, la declaración condicional se evalúa como falsa y no sucede nada. El script simplemente sale.

La sentencia if-else

En el script de shell anterior, solo se ejecutaba un comando después de que la declaración condicional se evaluara como True. Cuando la condición se evaluó como Falso, no se imprimió nada y el script simplemente salió. El if-else nos ayuda a ejecutar un comando en caso de que una condición se evalúe como falsa. El más Luego, la declaración es seguida por un comando o declaración si la condición devuelve Falso.

if [[ conditional_statement ]]

then

 command 

else

 command

fi

Modifiquemos el script de shell anterior y agreguemos un else declaración

#!/bin/bash

echo -n "Please Enter a score: "

read score

if [[ $score -gt 80 ]]

then

 echo "You have passed the exam!"

else

 echo "You have failed the exam, please try again"

fi

Aquí, el script de shell ejecuta el bloque de código después de else declaración solo si la primera condición se evalúa como falsa, es decir, si la puntuación proporcionada es inferior a 80.

En primera instancia, la puntuación proporcionada es 90 , que es mayor que 80 y, por lo tanto, se ejecuta la primera instrucción del script y se cierra el script.

En el segundo caso, sin embargo, se proporciona 70 y, dado que el valor es inferior a 80, el script omite la primera declaración, ya que se evalúa como falsa, y procede a ejecutar la segunda declaración después de else. declaración.

La sentencia if-elif-else

Hasta ahora, hemos verificado una condición que se evalúa como Verdadero o Falso. El elif (else -if ) se usa cuando hay varias declaraciones condicionales que tienen diferentes resultados. Si una condición se evalúa como Falsa, se procede a verificar si otras condiciones son Verdaderas. Aquí hay una sintaxis simple para la instrucción if-elif-else.

if [[ conditional_statement_1 ]]

then

 command_1 

elif [[ conditional_statement_2 ]]

then

 command_2

else

 command_3

fi

Considere el siguiente guión

#!/bin/bash

echo -n "Please Enter a score: "

read score

if [[ $score -ge 90 ]]

then

 echo "Excellent!"

elif [[ $score -ge 70 ]]

then

 echo "Congratulations! Job well done!"

elif [[ $score -ge 50 ]]

then

 echo "Fairly done. There's more room for improvement!"

else

 echo "Poorly done"

fi

En este ejemplo, si la puntuación es mayor o igual a 90, imprime el mensaje ¡Excelente! Sin embargo, si la puntuación es inferior a 90 pero superior o igual a 70, imprime ¡Felicitaciones! ¡Trabajo bien hecho! .
Si la puntuación es inferior a 70, pero superior o igual a 50, se imprime el mensaje Bastante hecho. ¡Hay más margen de mejora!

Y, por último, si la puntuación es inferior a 50, se imprime Mal hecho.

Declaración if anidada

Una sentencia if anidada comprende una sentencia if dentro de otra sentencia if. cuando una condición se cumple, el script procede a verificar la siguiente condición. En la siguiente demostración, tomaremos los valores de entrada de 3 valores numéricos y comprobaremos cuál de ellos es el mayor.

#!/bin/bash

read -p "Please enter the value of j:" j

read -p "Please enter the value of k:" k

read -p "Please enter the value of l:" l

if [ $j -gt $k ]

then

 if [ $j -gt $l ]

 then

 echo "j is greatest"

 else

 echo "l is greatest"

 fi

else

 if [ $k -gt $l ]

 then

 echo "k is greatest"

 else

 echo "l is greatest"

 fi

fi

Resumen

Esa fue una descripción general de alto nivel de las declaraciones condicionales en los scripts bash. Como ha visto, las declaraciones condicionales se utilizan para determinar el resultado de un script basado en expresiones condicionales establecidas. Con suerte, ahora tiene una base básica de declaraciones condicionales.


Ubuntu
  1. Cómo usar los comandos del historial de Bash

  2. ¿Cómo depurar un script Bash?

  3. ¿Usar la extensión .sh o .bash para scripts Bash?

  4. ¿Confirmar automáticamente al ejecutar scripts de Bash?

  5. Cómo dividir una cadena en Bash Script

Cómo usar el comando de lectura Bash

Cómo usar el comando echo en Bash Scripts en Linux

Cómo trabajar con declaraciones de casos en scripts Bash

Cómo ejecutar un script Bash

¿Cómo usar if-else en Shell Scripts?

Comprender Bash If Else y otras declaraciones condicionales