Tipos de declaraciones condicionales
Los siguientes tipos de declaraciones condicionales se pueden usar en bash.
- si declaración
- declaración if else
- if declaración elif
- Instrucción if anidada
- 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:
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
echo “Enter a number”
read n
if [ $n -lt 100 ] then
printf “$n is less than 100\n“
fi
Producción:
Ejecute el script.
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
echo “Enter username”
read un
echo “Enter password”
read pw
if [[ “$un“== “admin” && “$pw“= “superuser” ]] then
echo “Login Successful.”
fi
Producción:
Ejecute el script.
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:
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
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.
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:
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
echo “Enter the mark”
read mark
if (( $mark >= 90 )) then
echo “Grade – A+”
elif (( $mark < 90 && $mark >= 80 )) then
echo “Grade – A”
elif (( $mark < 80 && $mark >= 70 )) then
echo “Grade – B+”
elif (( $mark < 70 && $mark >= 60 )) then
echo “Grade – C+”
else
echo “Grade – F”
fi
Producción:
Ejecute el script.
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:
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
echo “Enter the sales amount”
read amount
echo “Enter the time duration”
read duration
if (( $amount >= 10000 )) then
if (( $duration <= 7 )) then
output=“You will get 20% bonus”
else
output=“You will get 15% bonus”
fi
else
if (( $duration <= 10 )) then
output=“You will get 10% bonus”
else
output=“You will get 5% bonus”
fi
fi
echo “$output“
Producción:
Ejecute el script.
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:
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
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 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
# Print grade based on the mark
name=$1
mark=$2
case $mark in
9[0–9]|100)
grade=“A+”
8[0–9])
grade=“A”
7[0–9])
grade=“B+”
6[0–9])
grade=“C+”
0|[0–9]|1[0–9]|2[0–9]|3[0–9]|4[0–9]|5[0–9])
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 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 !