Bash Scripting – Declaración If

Bash es un intérprete de lenguajes de comandos. Es un intérprete de comandos predeterminado en la mayoría de los sistemas GNU/Linux y está ampliamente disponible en varios sistemas operativos. El nombre es una abreviatura de Bourne-Again SHell . Las secuencias de comandos permiten la ejecución de instrucciones que, de lo contrario, se ejecutarían una por una de forma interactiva. 

En este artículo, discutiremos acerca de la declaración if en bash scripting.

Si declaración

La sintaxis básica de una sentencia if es la siguiente:

if CONDITION
then
  COMMANDS
fi

La instrucción if se compone de la palabra clave if, la frase condicional y la palabra clave then. La palabra clave fi se usa al final de la instrucción. Los COMANDOS se ejecutan si la CONDICIÓN se evalúa como Verdadera. No pasa nada si CONDICIÓN devuelve Falso; los COMANDOS son ignorados.

Ejemplo:

El siguiente es un script de ejemplo que le pedirá que ingrese un número y luego verifica si el número dado es par.

echo -n "Enter Number: "
read x

if [ $((x%2)) == 0 ]; then
  echo "Number is Even"
fi

Producción:

Producción

si… otra declaración

Una oración if…else tiene la siguiente sintaxis básica:

if CONDITION
then
  COMMANDS_1
else
  COMMANDS_2
fi

COMMANDS_1 se ejecutará si CONDITION se evalúa como True. De lo contrario, COMMANDS_2 se ejecutará si CONDITION devuelve False. Solo puede haber una cláusula else en una declaración.

Ejemplo:

Ampliemos el script del ejemplo anterior para comprobar si el número dado es par o impar.

echo -n "Enter Number: "
read x

if [ $((x%2)) == 0 ]; then
  echo "Number is Even"
else
  echo "Number is Odd"
fi

Producción:

Producción

si…elif…else Declaración

La siguiente es la sintaxis básica de una instrucción if…elif…else:

if CONDITION_1
then
  COMMANDS_1
elif CONDITION_2
then
  COMMANDS_2
else
  COMMANDS_3
fi

COMMANDS_1 se ejecutará si CONDITION_1 se evalúa como True. COMMANDS_2 se ejecutará si CONDITION_2 se evalúa como True. COMMANDS_3 se ejecuta si ninguno de los comandos de prueba se evalúa como Verdadero.

En la declaración, puede haber una o más cláusulas elif. La cláusula else es opcional .

Ejemplo:

Aumentemos el código en el ejemplo anterior para agregar la condición para verificar el cero.

echo -n "Enter Number: "
read x

if [ $x == 0 ]; then
  echo "Number is Zero"
elif [ $((x%2)) == 0 ]; then
  echo "Number is Even"
else
  echo "Number is Odd"
fi

Producción:

Producción

Instrucción if anidada

Las sentencias if se pueden anidar dentro de sentencias if en Bash. Se pueden anidar varias sentencias if dentro de otra sentencia if. Algo como esto:

if CONDITION_1
then
 if CONDITION_2
 then
   COMMANDS_1
 else
   COMMANDS_2
 fi
else
 COMMANDS_3
fi

Si tanto CONDITION_1 como CONDITION_2 se evalúan como True, se ejecutarán COMMANDS_1. Si CONDITION_2 se evalúa como False mientras que CONDITION_1 sigue siendo True, se ejecutarán COMMANDS_2. De lo contrario, se ejecuta COMMANDS_3.

Ejemplo:

Modifiquemos un poco el código de arriba para usar nested-if.

echo -n "Enter Number: "
read x

if [ $((x%2)) == 0 ]; then
 if [ $x == 0 ]; then
   echo "Number is Zero"
 else
   echo "Number is Even"
 fi
else
 echo "Number is Odd"
fi

Producción:

Producción

Algunas notas sobre la CONDICIÓN

Estas son algunas cosas a tener en cuenta al escribir las condiciones de prueba en bash.

1. Asegúrese de que haya espacios en blanco entre los corchetes y la declaración de verificación/comparación real.

Por ejemplo, lo siguiente no funcionará.

if [$x==0]

Bash informará un error sobre la falta de ] .

2. Siempre termine la línea antes de agregar una nueva palabra clave, como «entonces».

Si, entonces, else, elif y fi son todas palabras clave de shell, lo que significa que no se pueden usar en la misma línea. Poner un «;» entre la declaración anterior y la palabra clave, o comience una nueva línea con la palabra clave.

3. Para usar muchas condiciones en una declaración, use operadores lógicos.

Podemos usar operadores lógicos AND(&&) o lógicos OR(||) para usar múltiples condiciones.

Por ejemplo:

if [[ $x -ge $y ]] && [[ $x -ge $z ]]; then
  echo "x is greatest"
fi

Aquí, -ge es una abreviatura de mayor o igual que

Publicación traducida automáticamente

Artículo escrito por aayushmohansinha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *