Cuando trabaje con Bash y secuencias de comandos de shell, es posible que deba usar condiciones en su guión.
En programación, las condiciones son cruciales:se utilizan para afirmar si algunas condiciones son ciertos o no.
En este tutorial, nos centraremos en una de las sentencias condicionales del lenguaje Bash:la sentencia Bash if else.
Vamos a ver cómo puede usar esta declaración para ejecutar sus scripts de forma condicional.
También aprenderá cómo puede usar Bash if else anidados instrucciones para crear código más complejo.
Declaración Bash If Else
Para ejecutar una declaración "if else" de Bash, debe usar cuatro palabras clave diferentes:if, then, else y fi:
- si :representa la condición que desea verificar;
- entonces :si la condición anterior es verdadera, ejecute un comando específico;
- más :si la condición anterior es falsa, ejecute otro comando;
- fi :cierra la instrucción "if, then, else".
Cuando utilice la declaración "if else", deberá encerrar las condiciones entre corchetes simples o dobles.
if [[ condition ]]
then
<execute command>
else
<execute another command>
fi
Tenga en cuenta que la declaración "ELSE" es opcional , si lo omite, no se ejecutará nada si la condición se evalúa como falsa.
Nota :debe separar la condición de los corchetes con un espacio; de lo contrario, podría obtener un error de sintaxis.
Ejemplos de If Else
Ahora que sabe más sobre el Bash "if else" declaración, veamos cómo puede usarla en ejemplos del mundo real.
En esta sección, vamos a crear un script que imprima un mensaje si lo ejecuta el usuario root.
Si el script no es ejecutado por el usuario raíz, escribirá otro mensaje personalizado.
Para verificar si el script es ejecutado por root, necesitamos ver si el UID de la persona que llama es cero.
#!/bin/bash
# If the user is root, its UID is zero.
if [ $UID -eq 0 ]
then
echo "You are root!"
else
echo "You are not root."
fi
Como se indicó anteriormente, el "else La declaración ” no es obligatoria.
Si omitimos en nuestro script creado anteriormente, aún podríamos ejecutar la primera instrucción "entonces".
#!/bin/bash
# If the user is root, its UID is zero.
if [ $UID -eq 0 ]
then
echo "You are root!"
fi
Ahora, ¿qué sucede si desea agregar declaraciones "si" adicionales a sus scripts?
Declaración Bash If Elif
El “Si Elif La instrucción "se usa en Bash para agregar declaraciones "si" adicionales a sus scripts.
Para ejecutar una instrucción Bash "if elif", debe usar cinco palabras clave diferentes:if, then, elif, else y fi:
- si :representa la condición que desea verificar;
- entonces :si la condición anterior es verdadera, ejecute un comando específico;
- elif :utilizado para agregar una condición adicional a su estado de cuenta;
- más :si las condiciones anteriores son falsas, ejecutar otro comando;
- fi :cierra la instrucción "si, elif, entonces".
if [[ condition ]]
then
<execute command>
elif [[ condition ]]
then
<execute another command>
else
<execute default command>
fi
Una vez más, la declaración "ELSE" es opcional, por lo que puede omitirla si no necesita una declaración predeterminada.
if [[ condition ]]
then
<execute command>
elif [[ condition ]]
then
<execute another command>
fi
Ejemplos de If Elif
En nuestra sección anterior, usamos el "if else ” declaración para verificar si un usuario es root o no.
En esta sección, vamos a verificar si el usuario es root o si el usuario tiene un UID de 1002.
Si este no es el caso, saldremos del script y devolveremos el aviso al usuario.
if [[ $UID -eq 0 ]]
then
echo "You are root!"
elif [[ $UID -eq 1002 ]]
then
echo "You are user, welcome!"
else
echo "You are not welcome here."
exit 1;
fi
Felicidades, ahora ya sabes cómo usar el “if elif ” declaración!
Ahora, ¿qué sucede si desea tener múltiples condiciones bajo la misma declaración "if"?
Condiciones múltiples en If Else
Para tener varias condiciones escritas en la misma declaración "si no", debe separar sus condiciones con un operador "Y" o un operador "O".
# AND operator used in if else.
if [[ <condition_1> && <condition_2> ]];
then
<execute command>
fi
# OR operator used in if else.
if [[ <condition_1> || <condition_2> ]];
then
<execute_command>
else
<execute_another_command>
fi
Por ejemplo, si desea escribir un script que verifique que usted es el usuario raíz y que proporcionó el parámetro correcto, debe escribir:
#!/bin/bash
# If the user is root and the first parameter provided is 0.
if [[ $UID -eq 0 && $1 -eq 0 ]];
then
echo "You provided the correct parameters"
else
echo "Wrong parameters, try again"
fi
Declaraciones If Else anidadas
En algunos casos, desea implementar condiciones anidadas para verificar las condiciones en condiciones preliminares.
Para tener declaraciones "if else" anidadas, simplemente tiene que incluir la declaración "if" en otra declaración "if" y cerrar su declaración anidada antes de la adjunta.
if [[ condition ]]
then
if [[ other condition ]]
then
<execute command>
else
<execute another command>
fi
fi
Nota :asegúrese de tener una declaración "fi" de cierre para cada declaración "if" que abra. Un solo "fi" simplemente no es suficiente para varias declaraciones "si".
Ejemplos de sentencias anidadas
Como ejemplo, supongamos que desea verificar que el usuario sea root antes de verificar que el primer argumento proporcionado sea cero.
Para resolver eso, escribiría una declaración anidada "si, entonces, si no" de la siguiente manera:
#!/bin/bash
if [[ $UID -eq 0 ]]
then
if [[ $1 -eq 0 ]]
then
echo "You are allowed to execute this script."
else
echo "You should have provided 0 as the first argument."
fi
fi
Pruebas de bash
Como probablemente notó, en las secciones anteriores, usamos el operador "-eq" para comparar el valor de una variable con un número.
Hicimos una verificación de igualdad simple, pero ¿qué pasa si quieres tener una verificación de desigualdad?
¿Qué pasaría si quisiera verificar si un valor es mayor que un número dado, por ejemplo?
Para realizar esto, necesitará pruebas de Bash .
Las pruebas Bash son un conjunto de operadores que puede usar en sus declaraciones condicionales para comparar valores entre sí.
Las pruebas de Bash se pueden enumerar ejecutando el comando "prueba de ayuda".
$ help test
Al escribir pruebas de Bash, básicamente tiene tres opciones:
- Condiciones de escritura en archivos y directorios :si existen, si son un archivo de caracteres, un archivo de dispositivo, etc.;
- Escribir condiciones en los números :si son iguales entre sí, si uno es mayor que el otro;
- Escribir condiciones en cadenas :si se establece una variable de cadena o si dos cadenas son iguales entre sí.
Condiciones del archivo Bash
Condiciones del archivo Bash se utilizan para comprobar si un archivo existe o no, si se puede leer, modificar o ejecutar.
Las pruebas de archivos Bash se describen en la siguiente tabla:
Operador | Descripción |
-e | Comprueba si el archivo existe o no |
-d | Comprueba si el archivo es un directorio |
-b | Comprueba si el archivo es un dispositivo de bloque |
-c | Comprueba si el archivo es un dispositivo de caracteres |
f1 -nt f2 | Si el archivo f1 es más nuevo que el archivo f2 |
f1 -ot f2 | Si el archivo f1 es más antiguo que el archivo f2 |
-r | El archivo se puede leer (permiso de lectura) |
-w | El archivo se puede modificar (permiso de escritura) |
-x | El archivo se puede ejecutar (permiso de ejecución) |
Operador | Descripción |
num1 -equivalente número2 | Comprueba si los números son iguales |
num1 -ne número2 | Comprobar si los números no son iguales |
num1 -lt número2 | Comprobando si num1 es menor que num2 |
num1 -le número2 | Menor o igual que num2 |
num1 -gt número2 | Mayor que num2 |
num1 -ge número2 | Mayor o igual que num2 |
Operador | Descripción |
str1 = str2 | Comprueba si las cadenas son iguales o no |
str1 != str2 | Comprueba si las cadenas son diferentes |
-z str1 | Comprueba si str1 está vacío |
-n str1 | Comprueba si str1 no está vacío |