GNU/Linux >> Tutoriales Linux >  >> Linux

Declaraciones If-Else de Bash:todo lo que necesita saber

Este artículo cubre los fundamentos de las secuencias de comandos de shell Bash y describe las construcciones lógicas más utilizadas, incluido el único si declaración, if-else declaración y elif declaración. Además de esto, cubriremos la forma correcta de comparar cadenas y números. ¡Mejore su experiencia de shell de Linux en 5 minutos!

Siempre que sea un administrador de sistemas experimentado o un usuario principiante de Linux, vale la pena conocer los fundamentos de las secuencias de comandos de shell. Esta habilidad le brinda la capacidad de automatizar tareas repetibles dentro de uno o varios servidores. Por lo general, esas tareas incluyen la instalación de software y la configuración de cualquier servicio del sistema.

sentencia si

si declaración sirve como un núcleo fundamental para todos los lenguajes de programación. Esta declaración ayuda a implementar la lógica de toma de decisiones dentro de su programa o script. Por eso es importante entender cómo usar varios si declaraciones.

Esta es la sintaxis básica:

if [ condition ]
then
  COMMANDS
fi

donde:

  • condición – es el operador lógico del si declaración.
  • COMANDOS – comandos, que se ejecutan cuando la condición es verdadera .
  • si, entonces, fi – son palabras clave de sintaxis.

Aquí hay una lista de los operadores de condiciones de prueba más utilizados:

Lo más interesante es que durante la ejecución del script Bash todo en [ ] pasa a la prueba utilidad, que devuelve verdaderofalso . 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 (-eq2 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 15 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 110 .

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_1condició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_1VALUE_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.
  • casoenesac – 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!


Linux
  1. Todo lo que necesitas saber sobre MySQL

  2. Todo lo que necesitas saber sobre MySQL

  3. Cómo usar el comando de tiempo de Linux:todo lo que necesita saber

  4. ¿Qué es el alojamiento VPS? Todo lo que necesita saber sobre los servidores privados virtuales

  5. Lo que los administradores de sistemas deben saber sobre el uso de Bash

Todo lo que necesita saber sobre el servidor Linux OpenSSH

Todo lo que necesita saber sobre el sistema operativo Linux Zorin

Todo lo que necesita saber sobre el sistema operativo Peppermint Linux

Todo lo que necesita saber sobre la distribución Linux Mint

Todo lo que necesita saber sobre los inodos en Linux

Comandos útiles de Bash que quizás no conozcas

    Operador Descripción
    ! 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.