Devuelve verdadero si los números son iguales
[[ ${arg1} -eq ${arg2} ]]
Devuelve verdadero si los números no son iguales
[[ ${arg1} -ne ${arg2} ]]
Devuelve verdadero si arg1 es menor que arg2
[[ ${arg1} -lt ${arg2} ]]
Devuelve verdadero si arg1 es menor o igual a arg2
[[ ${arg1} -le ${arg2} ]]
Devuelve verdadero si arg1 es mayor que arg2
[[ ${arg1} -gt ${arg2} ]]
Devuelve verdadero si arg1 es mayor o igual a arg2
[[ ${arg1} -ge ${arg2} ]]
Como nota al margen, arg1 y arg2 pueden ser enteros positivos o negativos.
Al igual que en otros lenguajes de programación, puedes usar condiciones AND y OR:
[[ test_case_1 ]] && [[ test_case_2 ]]
# Y
[[ test_case_1 ]] || [[ test_case_2 ]]
# O
Condicionales en Bash
En la sección anterior, cubrimos algunas de las expresiones condicionales más populares. Ahora podemos usarlas con declaraciones condicionales estándar como if, if-else y switch case.
Declaración if
El formato de una declaración if en Bash es el siguiente:
if [[ some_test ]]
then
<commands>
fi
Aquí hay un ejemplo rápido que te pedirá que ingreses tu nombre en caso de que lo hayas dejado vacío:
#!/bin/bash
# Ejemplo de declaración if en Bash
read -p "¿Cuál es tu nombre? " name
if [[ -z ${name} ]]
then
echo "¡Por favor, ingresa tu nombre!"
fi
Declaración If Else
Con una declaración if-else, puedes especificar una acción en caso de que la condición en la declaración if no coincida. Podemos combinar esto con las expresiones condicionales de la sección anterior de la siguiente manera:
#!/bin/bash
# Ejemplo de declaración if en Bash
read -p "¿Cuál es tu nombre? " name
if [[ -z ${name} ]]
then
echo "¡Por favor, ingresa tu nombre!"
else
echo "¡Hola, ${name}!"
fi
Puedes usar la declaración if anterior con todas las expresiones condicionales de los capítulos anteriores:
#!/bin/bash
admin="devdojo"
read -p "¿Ingresa tu nombre de usuario? " username
# Verifica si el nombre de usuario proporcionado es el admin
if [[ "${username}" == "${admin}" ]] ; then
echo "¡Eres el usuario admin!"
else
echo "¡NO eres el usuario admin!"
fi
Aquí hay otro ejemplo de una declaración if que verificaría tu ID de usuario actual y no te permitiría ejecutar el script como el usuario root:
#!/bin/bash
if (( $EUID == 0 )); then
echo "Por favor, no ejecutes como root"
exit
fi
Si colocas esto al principio de tu script, se cerrará en caso de que el EUID sea 0 y no ejecutará el resto del script. Esto se discutió en el foro de la comunidad de DigitalOcean.
Declaraciones Switch Case
Al igual que en otros lenguajes de programación, puedes usar una declaración case para simplificar condicionales complejos cuando hay múltiples opciones diferentes. Así que en lugar de usar algunas declaraciones if e if-else, podrías usar una única declaración case. La sintaxis de la declaración case en Bash se ve así:
case $some_variable in
pattern_1)
commands
;;
pattern_2 | pattern_3)
commands
;;
*)
default commands
;;
esac
Un resumen rápido de la estructura:
- Todas las declaraciones case comienzan con la palabra clave case.
- En la misma línea que la palabra clave case, necesitas especificar una variable o una expresión seguida de la palabra clave in.
- Después de eso, tienes tus patrones case, donde necesitas usar ) para identificar el final del patrón.
- Puedes especificar múltiples patrones divididos por una barra vertical: |.
- Después del patrón, especificas los comandos que deseas que se ejecuten en caso de que el patrón coincida con la variable o la expresión que especificaste.
- Todas las cláusulas deben terminarse añadiendo ;; al final.
- Puedes tener una declaración por defecto agregando * como patrón.
- Para cerrar la declaración case, usa la palabra clave esac (case escrita al revés).
Aquí hay un ejemplo de una declaración case en Bash:
#!/bin/bash
echo -n "Ingresa el nombre de una marca de automóvil: "
read car
case $car in
Tesla)
echo -n "La fábrica de ${car} está en EE. UU."
;;
BMW | Mercedes | Audi | Porsche)
echo -n "La fábrica de ${car} está en Alemania."
;;
Toyoda | Mazda | Mitsubishi | Subaru)
echo -n "La fábrica de ${car} está en Japón."
;;
*)
echo -n "${car} es una marca de automóvil desconocida."
;;
esac
Con este script, le pedimos al usuario que ingrese el nombre de una marca de automóvil como Tesla, BMW, Mercedes, etc. Luego, con una declaración case, verificamos el nombre de la marca y, si coincide con alguno de nuestros patrones, imprimimos la ubicación de la fábrica. Si el nombre de la marca no coincide con ninguna de nuestras declaraciones case, imprimimos un mensaje por defecto: una marca de automóvil desconocida.
Conclusión Te aconsejo que intentes modificar el script y jugar un poco con él para que puedas practicar lo que acabas de aprender en los últimos dos capítulos. Para más ejemplos de declaraciones case en Bash, asegúrate de revisar el capítulo 16, donde crearemos un menú interactivo en Bash usando una declaración case para procesar la entrada del usuario.
No hay comentarios.:
Publicar un comentario