GNU/Linux >> Tutoriales Linux >  >> Linux

Sintaxis de Bash If Else con ejemplos

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:

Por ejemplo, para verificar si un archivo es un directorio, escribiría el siguiente script

#!/bin/bash

# Checking the first argument provided
if [[ -d $1 ]]
then  
  echo "This is a directory"
else
  echo "Not a directory"
fi

Condiciones del número de bash

Las condiciones de número de bash se utilizan para comparar dos números:si son iguales, si uno es mayor que otro o menor que otro.

Aquí hay una tabla de las condiciones de número de Bash más utilizadas:

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)

Por ejemplo, para verificar si un número no es igual a cero, escribiría:

#!/bin/bash

# Checking the first argument provided
if [[ $1 -eq 0 ]]
then  
  echo "You provided zero as the first argument."
else
  echo "You should provide zero."
fi

Condiciones de la cadena Bash

Las condiciones de cadena Bash se utilizan para verificar si dos cadenas son iguales o si una cadena está vacía.

Aquí hay una tabla de las principales condiciones de cadena de Bash:

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

Por ejemplo, para verificar si un usuario proporcionó un valor a su secuencia de comandos, escribiría:

#!/bin/bash

# Checking the first argument provided
if [[ -n $1 ]]
then  
  echo "You provided a value"
else
  echo "You should provide something"
fi

Conclusión

En el tutorial de hoy, aprendiste sobre la declaración Bash "If Else".

Viste, con ejemplos, que puedes construir declaraciones más complejas:usando declaraciones anidadas y elif.

Finalmente, ha descubierto acerca de las pruebas de Bash, qué son y cómo se usan para verificar las condiciones en los scripts.

Si está interesado en la administración del sistema Linux, tenemos una sección completa dedicada a ella en el sitio web, ¡así que asegúrese de consultarla!


Linux
  1. Matrices bash con ejemplos

  2. Declaración de Bash If-Else con ejemplos

  3. 4 Ejemplos de sentencias If de Awk (if, if else, if else if, :? )

  4. 5 ejemplos de declaraciones de casos Bash

  5. '&&' vs. '&' con el comando 'test' en Bash

Bash For Loop con ejemplos prácticos

Comando Bash Echo explicado con ejemplos en Linux

Redirección de Bash explicada con ejemplos

Bash Scripting - Funciones explicadas con ejemplos

Bash Scripting - Variables explicadas con ejemplos

Bash Scripting - Comando Printf explicado con ejemplos

    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