Declaración condicional Bash

La declaración condicional se utiliza en cualquier lenguaje de programación para realizar cualquier tarea de toma de decisiones. Esta declaración también se usa en bash para realizar tareas automatizadas como otro lenguaje de programación, solo que la sintaxis es un poco diferente en bash. Se pueden usar dos tipos de declaraciones condicionales en bash. Estas son declaraciones ‘Si’ y ‘caso’. Las declaraciones ‘If’ se pueden usar para verificar las condiciones de múltiples maneras. En este tutorial se describen muchas variaciones de declaraciones ‘if’. La instrucción ‘case’ se utiliza como alternativa a la instrucción ‘if’. Pero, algunas condiciones específicas se pueden verificar solo usando la declaración ‘case’ y no admite varias condiciones como la declaración ‘if’. Por lo tanto, cualquier tarea realizada por la instrucción ‘case’ se puede realizar fácilmente con la instrucción ‘if’, pero la instrucción ‘case’ no se puede usar para todos los tipos de tareas realizadas por la instrucción ‘if’.

Tipos de declaraciones condicionales

Los siguientes tipos de declaraciones condicionales se pueden usar en bash.

  1. si declaración
  2. declaración if else
  3. if declaración elif
  4. Instrucción if anidada
  5. declaración de caso

Cada tipo de declaraciones se explica en este tutorial con un ejemplo.

Operadores condicionales

Se pueden usar muchos operadores condicionales en la instrucción ‘if’ para realizar cualquier tarea condicional. Algunos de los operadores condicionales más utilizados se mencionan a continuación.

Operador Descripción
-eq Devuelve verdadero si dos números son equivalentes
-lt Devuelve verdadero si un número es menor que otro número
-gt Devuelve verdadero si un número es mayor que otro número
== Devuelve verdadero si dos cadenas son equivalentes
!= Devuelve verdadero si dos cadenas no son equivalentes
! Devuelve verdadero si la expresión es falsa
-D Verificar la existencia de un directorio
-mi Verificar la existencia de un archivo
-r Verificar la existencia de un archivo y leer el permiso.
-w Verifique la existencia de un archivo y permiso de escritura
-X Verificar la existencia de un archivo y ejecutar el permiso.

Uso de una declaración if simple

Sintaxis:

if [ condition ] then

Command(s)

fi

Ejemplo-1: declaración if con la condición única

Este ejemplo muestra el uso condicional único de la instrucción if. Cree un archivo llamado ‘cond1.sh’ y agregue el siguiente script. Este script tomará un valor numérico como entrada y verificará que el valor sea menor que 100 o no usando la condición if. Si la condición es verdadera, imprimirá un mensaje en la terminal.

cond1.sh

#!/bin/bash
echo “Enter a number”
read n
if [ $n -lt 100 ] then
printf $n is less than 100\n
fi

Producción:

Ejecute el script.

$ bash cond1.sh

Aquí, 87 se toma como entrada que es menor que 100. Entonces, la salida es “87 es menor que 100”. No se imprime ninguna salida para la entrada superior a 100.

Ejemplo-2: declaración if con múltiples condiciones

En este ejemplo se muestra cómo se pueden aplicar dos condiciones con la instrucción AND lógica en ‘if’. Cree un archivo llamado ‘ cond2.sh ‘ y agregue el siguiente script. Aquí, el nombre de usuario y la contraseña se tomarán del usuario. A continuación, se utiliza la declaración ‘if’ para comprobar que el nombre de usuario es ‘admin ‘ y la contraseña es ‘ superusuario ‘. Si ambos valores coinciden, la declaración ‘if’ devolverá verdadero e imprimirá el mensaje “Inicio de sesión exitoso”.

cond2.sh

#!/bin/bash
echo “Enter username”
read un
echo “Enter password”
read pw
if [[ $un== “admin” &amp&amp $pw= “superuser” ]] then
echo “Login Successful.”
fi

Producción:

Ejecute el script.

$ bash cond2.sh

El script no imprimirá ninguna salida para una entrada no válida e imprimirá el mensaje de éxito para una entrada válida.

Uso de la declaración if-else

Sintaxis:

if [ condition ] then
Command(s)
else
Command(s)
fi

Ejemplo-3: declaración if-else con múltiples condiciones

Para ejecutar una declaración para la condición verdadera y otra declaración para la condición falsa, en este ejemplo se usa la declaración if-else . Cree un archivo llamado ‘cond3.sh’ y agregue el siguiente script. Aquí, la variable $ name se usa para tomar la entrada del usuario y el valor de $ name se comparará con dos valores, ‘Neha’ y ‘Nil ‘. Si $ name coincide con cualquiera de estos valores, la condición if devolverá verdadera y se ejecutará la declaración de la parte ‘if’ . Si $ name no coincide con ninguno de los valores, entonces si la condición devolverá falso y la declaración de ‘ else’ parte se ejecutará.

cond3.sh

#!/bin/bash
echo “Enter your name”
read name
if [[ $name== “Neha” || $name== ‘Nil’ ]] then
echo “You have won the prize”
else
echo “Try for the next time”
fi

Producción:

Ejecute el script.

$ bash cond3.sh

El resultado es, “Has ganado el premio” para la entrada válida y “Inténtalo la próxima vez” para la entrada no válida.

Uso de la declaración if-elif-else

Sintaxis:

if [ condition ] then
Command(s)
elif [ condition ] then
Command(s)
…..
else
Command(s)
fi

Ejemplo-4: declaración if-elif-else para verificar diferentes condiciones

En este ejemplo, se declaran varias condiciones con varias declaraciones if para imprimir la calificación según la marca de entrada. Cree un archivo llamado ‘cond4.sh ‘ y agregue el siguiente script. Después de tomar el valor de $ mark, la primera instrucción `if` probará que el valor sea mayor o igual a 90. Si devuelve verdadero, se imprimirá” Grade – A + ” de lo contrario, se aplicará a la segunda condición. El segundo “si” probará que el valor es menor que 90 y mayor o igual que 80. Si devuelve verdadero, se imprimirá “Grado – A” de lo contrario, se aplicará a la tercera condición. Si la tercera condición es verdadera, se imprimirá “Grado – B +” de lo contrario, elija la cuarta condición. Si la cuarta condición es verdadera, se imprimirá “Calificación – C +” y si devuelve falso, se ejecutará la declaración de la parte else que imprimirá, “Calificación – F”.

cond4.sh

#!/bin/bash
echo “Enter the mark”
read mark
if (( $mark &gt= 90 )) then
echo “Grade – A+”
elif (( $mark &lt 90 &amp&amp $mark &gt= 80 )) then
echo “Grade – A”
elif (( $mark &lt 80 &amp&amp $mark &gt= 70 )) then
echo “Grade – B+”
elif (( $mark &lt 70 &amp&amp $mark &gt= 60 )) then
echo “Grade – C+”
else
echo “Grade – F”
fi

Producción:

Ejecute el script.

$ bash cond4.sh

El guión se prueba con tres valores de calificación. Estos son 95, 79 y 50. De acuerdo con las condiciones utilizadas en el script, se imprime la siguiente salida.

Uso de anidado if

Sintaxis:

if [ condition ] then
Commands
if [ condition ] then
Commands
fi
fi

Ejemplo-5: Calcule la bonificación según el monto y la duración de las ventas

Este ejemplo muestra el uso de una declaración if anidada que calculará la bonificación en función del monto de las ventas y la duración del tiempo. Cree un archivo llamado ‘cond5.sh’ y agregue el siguiente código. Los valores de $ monto y $ duración se toman como entrada. A continuación, la primera declaración ‘si’ verificará que el monto de $ sea mayor o igual a 10000 o no. Si devuelve verdadero, comprobará la condición de la declaración ‘if’ anidada. el valor de $ duración es verificado por la instrucción interna ‘if’. Si $ duración es menor o igual a 7, entonces se almacenará el mensaje “Obtendrá un bolo del 20%” de lo contrario, el mensaje “Obtendrá un bono del 15%” se almacenará en la salida de $variable. Si la primera condición ‘if’ devuelve falso, se ejecutarán las declaraciones de la parte else. En la segunda condición anidada “si”, se imprimirá el mensaje “Obtendrá un bono del 10%” para devolver un valor verdadero y el mensaje “Obtendrá un bono del 5%” se imprimirá si devuelve un valor falso.

cond5.sh

#!/bin/bash
echo “Enter the sales amount”
read amount
echo “Enter the time duration”
read duration
 
if (( $amount &gt= 10000 )) then
if (( $duration &lt= 7 )) then
output=“You will get 20% bonus”
else
output=“You will get 15% bonus”
fi
else
if (( $duration &lt= 10 )) then
output=“You will get 10% bonus”
else
output=“You will get 5% bonus”
fi
fi
echo $output

Producción:

Ejecute el script.

$ bash cond5.sh

El script se prueba primero con 12000 como cantidad y 5 como valor de duración. De acuerdo con la condición ‘si’, se imprime el mensaje “Obtendrá un bono del 20%. A continuación, la secuencia de comandos se prueba con 9000 como la cantidad y 12 como valores de duración y se imprime el mensaje “Obtendrá un bono del 5%”.

Uso de declaración de caso

Sintaxis:

case  in
pattern 1) commands
pattern n) commands
esac

Ejemplo-6: declaración ‘caso’ con un solo valor

La instrucción ‘case’ se puede utilizar como alternativa a la instrucción ‘if’. Cree un archivo llamado ‘cond6.sh’ y agregue el siguiente código para realizar algunas operaciones aritméticas simples. Este script leerá tres valores de la línea de comando y los almacenará en las variables $ N1, $ N2 y $ op. Aquí, $ N1 y $ N2 se usan para almacenar dos valores numéricos y $ op se usa para almacenar cualquier operador aritmético o símbolo. La instrucción ‘case’ se usa para verificar cuatro símbolos para realizar cualquier operación aritmética. Cuando $ op es ‘+’, agregará $ N1 y $ N2 y almacenará el resultado en $ Result. De la misma manera, los símbolos ‘-‘ y ‘/’ se utilizan para realizar la operación de resta y división. El símbolo ‘x’ se usa aquí para hacer la operación de multiplicación. Para cualquier otro valor de $ op, imprimirá un mensaje, “Número incorrecto de argumentos”.

cond6.sh

#!/bin/bash
N1=$1
op=$2
N2=$3
case $op in
‘+’)
((Result=$N1+$N2))
‘-‘)
((Result=$N1$N2))
‘x’)
((Result=$N1*$N2))
‘/’)
((Result=$N1/$N2))
*)
echo “Wrong numbers of arguments”
exit 0
esac
echo $N1 $op $N2= $Result

Producción:

Ejecute el script con tres argumentos de línea de comando. El script se ejecuta cuatro veces utilizando cuatro operadores, ‘+’, ‘-‘, ‘x’ y ‘/’.

$ bash cond6.sh 40 + 20
$ bash cond6.sh 4020
$ bash cond6.sh 40 x 20
$ bash cond6.sh 40 / 20

La siguiente salida aparecerá después de ejecutar el script.

Ejemplo-7: declaración ‘caso’ con un rango de valores

La declaración ‘case’ no puede definir múltiples condiciones con el operador lógico como la declaración ‘if’. Pero usando la tubería (‘|’), se pueden asignar múltiples condiciones en la declaración ‘case’. Este ejemplo muestra el valor de calificación basado en calificaciones como el Ejemplo-4 pero usando la instrucción ‘case’ en lugar de ‘if’. Los valores de $ name y $ mar k se dan mediante argumentos de línea de comando. La primera condición está definida por ‘ 9 [0-9] | 100 ‘ para imprimir “Grado – A +”. Esto significa que si el valor de $ mark está dentro de 90-99 o 100, la condición será verdadera. La segunda condición es ‘ 8 [0-9] ‘ para imprimir “Grade – A” y esto coincidirá con $ markcon cualquier valor del rango, 80-89. Las condiciones tercera y cuarta funcionan como la segunda condición. La quinta condición es ‘ 0 | 1 [0-9] | 2 [0-9] | 3 [0-9] | 4 [0-9] | 5 [0-9] ‘ para imprimir ‘Grado – F’ y coincidirá con $ mark con 0 o cualquier número en los rangos 0-9, 10-19, 20-29, 30-39, 40-49 y 50-59.

cond7.sh

#!/bin/bash
#   Print grade based on the mark
name=$1
mark=$2
case $mark in
9[09]|100)
grade=“A+”
8[09])
grade=“A”
7[09])
grade=“B+”
6[09])
grade=“C+”
0|[09]|1[09]|2[09]|3[09]|4[09]|5[09])
grade=“F”
*)
echo “Invalid mark”
exit 0
esac
echo $name obtained $grade

Producción:

Ejecute el script con dos argumentos de línea de comando. El script se ejecuta cuatro veces con diferentes valores de argumento.

$ bash cond7.sh Lily 92
$ bash cond7.sh Nahar 78
$ bash cond7.sh John 500
$ bash cond7.sh John aa

Conclusión:

En este tutorial se intenta explicar los usos múltiples de las declaraciones de condición mediante el uso de ejemplos apropiados. Espero que el lector pueda usar declaraciones condicionales en el script bash de manera eficiente después de practicar correctamente los ejemplos anteriores.

¡Para más información mira el video !

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux