! EXPRESIÓN | La EXPRESIÓN es falsa. |
-n CADENA | La longitud de STRING es mayor que cero.Texto |
-z CADENA | La longitud de STRING es cero (la STRING está vacía) |
CADENA1 =CADENA2 | STRING1 es igual a STRING2 |
CADENA1 !=CADENA2 | STRING1 no es igual a STRING2 |
ENTERO1 -eq ENTERO2 | INTEGER1 es numéricamente igual a INTEGER2 |
ENTERO1 -gt ENTERO2 | INTEGER1 es numéricamente mayor que INTEGER2 |
ENTERO1 -lt ENTERO2 | INTEGER1 es numéricamente menor que INTEGER2 |
-e ARCHIVO | El ARCHIVO existe |
-d ARCHIVO | FILE existe y es un directorio |
-s ARCHIVO | El ARCHIVO existe y su tamaño es mayor que cero (el ARCHIVO no está vacío. |
-w ARCHIVO | FILE existe y se concede el permiso de escritura. |
-x ARCHIVO | El ARCHIVO existe y se otorga el permiso de ejecución. |
-r ARCHIVO | El ARCHIVO existe y se otorga el permiso de lectura. |
Lo más interesante es que durante la ejecución del script Bash todo en [ ] pasa a la prueba utilidad, que devuelve verdadero o falso . Entonces, si olvida la sintaxis del operador, simplemente use su página man:
man test
Echemos un vistazo al si más simple ejemplo de declaración:
#!/bin/bash
var=2
if [ $var -eq 2 ]
then
echo "var equals 2"
fi
Salida esperada:
var equals 2
En el ejemplo anterior, configuramos la variable var valor a 2 , luego probamos si var valor es igual a (-eq ) 2 e imprimió el mensaje.
En la vida real, normalmente usamos si instrucciones en combinación con construcciones de bucles de Bash (bucles for, bucles while, bucles hasta). Este es un ejemplo del uso de si declaración con for -bucle:
#!/bin/bash
for var in 1 2 3 4 5
do
if [ $var -eq 3 ]
then
echo "Value 3 found"
break
fi
echo var=$var
done
Salida esperada:
var=1
var=2
Value 3 found
En este ejemplo, estamos recorriendo la lista de números desde 1 a 5 en el para -bucle e imprimiendo el valor de la variable, que acabamos de procesar. Cuando se encuentra el valor 3, estamos interrumpiendo la ejecución del script.
Además de los ejemplos anteriores, puede usar el resultado de un cálculo matemático en el si declaración:
#!/bin/bash
for var in {1..10}
do
if (( $var % 2 == 0 ))
then
echo "$var is even number"
fi
done
En el ejemplo anterior, estamos comprobando números pares en el rango entre 1 y 10 .
Salida esperada:
2 is even number
4 is even number
6 is even number
8 is even number
10 is even number
Ahora, puede verificar la salida o el resultado de la ejecución de un comando Bash. Intentemos comprobar que el usuario existe en /etc/passwd archivo.
#!/bin/bash
user='root'
check_result=$( grep -ic "^$user" /etc/passwd )
if [ $check_result -eq 1 ]
then
echo "$user user found"
fi
En el ejemplo anterior, usamos grep comando para buscar a través de /etc/passwd archivo:
grep -ic "^$user" /etc/passwd
donde:
- -yo – búsqueda que no distingue entre mayúsculas y minúsculas.
- -c – devolver el número de líneas encontradas (0 – nada encontrado; 1 o más cuando se encontró algo).
- “^$usuario” – busca la cadena que comienza (^ ) del valor de $user variables.
Todo lo demás dentro del ejemplo debe quedar claro.
Salida esperada:
root user found
A continuación, comprobemos que /etc/passwd el archivo existe:
#!/bin/bash
file='/etc/passwd'
if [ -s $file ]
then
echo "$file file found"
fi
Salida esperada:
/etc/passwd file found
Declaración if-else
Después de familiarizarse con el si básico instrucción, echemos un vistazo a cómo usar Bash if-else declaración.
Esta es la sintaxis general:
if [ condition ]
then
TRUE_COMMANDS
else
FALSE_COMMANDS
fi
donde:
- condición – es el operador lógico del si declaración.
- TRUE_COMMANDS – comandos, que se ejecutan si la condición es verdadera.
- FALSE_COMMANDS – comandos, que se ejecutan si la condición es falsa.
- si, entonces, si no, fi – son palabras clave de sintaxis.
Para demostrar cómo funciona, cambiemos un ejemplo, donde detectamos números pares. Ahora, imprimamos qué número es par y cuál es impar:
#!/bin/bash
for var in {1..10}
do
if (( $var % 2 == 0 ))
then
echo "$var is even number"
else
echo "$var is odd number"
fi
done
Aquí hay un resultado esperado:
1 is odd number
2 is even number
3 is odd number
4 is even number
5 is odd number
6 is even number
7 is odd number
8 is even number
9 is odd number
10 is even number
declaración Elif
Ahora, ¿qué sucede si necesitamos verificar varias condiciones diferentes durante la ejecución de nuestro script? Eso también es posible usando la declaración elif, que es un atajo de "else if ”.
Así es como se ve la sintaxis:
if [ condition_1 ]
then
CONDITION_1_COMMANDS
elif [ condition_2 ]
then
CONDITION_2_COMMANDS
else
ALL_OTHER_COMMANDS
fi
donde:
- condición_1 – es la condición lógica para ejecutar CONDITION_1_COMMANDS .
- CONDICIÓN_1_COMANDOS – comandos, que se ejecutan si la condición_1 es verdadero .
- CONDICIÓN_2_COMANDOS – comandos, que se ejecutan si la condición_2 es verdadero .
- TODOS_OTROS_COMANDOS – comandos, que se ejecutan cuando condición_1 y condición_2 son falsos .
- si, entonces, elif, si no, fi – son palabras clave de sintaxis.
Veamos el siguiente ejemplo:
#/bin/bash
time=8
if [ $time -lt 10 ]
then
echo "Good morning"
elif [ $time -lt 20 ]
then
echo "Good day"
else
echo "Good evening"
fi
En este ejemplo, configuramos un tiempo variable a 8 AM e imprimió un mensaje basado en el valor de la hora.
Salida esperada:
Good morning
Anidar declaraciones si
Ahora, cuando nos familiaricemos con los conceptos básicos, podemos terminar este tema aprendiendo cómo anidar sentencias if.
He aquí un ejemplo:
#/bin/bash
value=5
if [ $value -lt 10 ]
then
if [ $value -eq 5 ]
then
echo "Value equals 5"
else
echo "Value not equals 5"
fi
else
echo "value is greater than 10"
fi
Aquí hay un resultado esperado:
Value equals 5
Operadores booleanos
Puede ser útil verificar varias condiciones en un solo si declaración. Puede hacerlo usando los siguientes operadores booleanos:
- && – AND lógico.
- || – O lógico.
He aquí un ejemplo rápido:
#!/bin/bash
username="andrei"
birthday="12/16"
today=$( date +"%m/%d")
if [ $USER = $username ] && [ $today = $birthday ]
then
echo "Happy birthday\!"
fi
En este ejemplo simple, estamos verificando que dos condiciones sean verdaderas:
- El nombre de usuario del usuario registrado debe ser igual a andrei.
- La fecha de hoy debería ser el 16 de diciembre.
Si ambas condiciones son verdaderas, estamos imprimiendo "'¡Feliz cumpleaños!"
Declaración de caso
En algunas situaciones, es posible que necesite tener más de 3 declaraciones elif para verificar su script. En este caso, usar una declaración elif se vuelve complicado. Bash le brinda una mejor manera de manejar tales situaciones usando un caso declaración.
Aquí está la sintaxis:
case VARIABLE in
VALUE_1)
COMMANDS_FOR_VALUE_1
;;
VALUE_2)
COMMANDS_FOR_VALUE_2
;;
*)
DEFAULT_COMMANDS
;;
esac
donde:
- VARIABLE – la variable cuyo valor se comparará con VALUE_1 o VALUE_2 .
- COMMANDS_FOR_VALUE_1 – comandos para ejecutar cuando VARIABLE el valor es VALUE_1 .
- COMMANDS_FOR_VALUE_2 – comandos para ejecutar cuando VARIABLE el valor es VALUE_2 .
- COMANDOS_DEFAULT – comandos para ejecutar cuando VARIABLE el valor no era igual a una de las condiciones superiores.
- caso , en , esac – palabras clave de sintaxis.
Este es el patrón muy común para procesar la entrada al script e iniciar, detener o reiniciar el servicio según el usuario entrada:
#!/bin/bash
case $1 in
start)
echo "Starting the service"
;;
stop)
echo "Stopping the service"
;;
restart)
echo "Restarting the service"
;;
*)
echo "Unknown action"
;;
esac
En este ejemplo, comprobamos el valor de la oferta especial $1 variable bash. Contiene el primer argumento, proporcionado a un script. Por ejemplo, si guarda el ejemplo anterior en un archivo service.sh y ejecutarlo así:
bash service.sh start
$1 contendrá la palabra "inicio" como su valor.
El resto lo maneja la lógica de declaración de caso.
Resumen
En este artículo, cubrimos los fundamentos de las secuencias de comandos de shell Bash y describimos las construcciones lógicas más utilizadas, incluido el si único. declaración, if-else declaración y elif declaración.
Esperamos que este artículo le haya resultado útil. En caso afirmativo, por favor, ¡ayúdenos a difundirlo por todo el mundo!