Cómo usar la declaración if...else en Bash

Suraj Joshi 30 enero 2023
  1. La declaración if en Bash
  2. if ... else Declaración en Bash
  3. if...elif...else Declaración en Bash
  4. Anidado if declaración en Bash
Cómo usar la declaración if...else en Bash

Las declaraciones condicionales son frecuentes para la toma de decisiones en casi todos los lenguajes de programación. Permiten la ejecución de una o varias declaraciones sólo si se satisface una condición particular. if ... else se usa como sentencia condicional en la mayoría de los lenguajes de programación. En Bash también tenemos if, if...elif...else, if ... else y declaraciones anidadas if como declaraciones condicionales.

La declaración if en Bash

Sintaxis de if Declaración

if Test-Expression
then
  Statements
fi

En el ejemplo anterior, si la Test-Expression es True, las Statements se ejecutan. La palabra clave fi se usa para terminar la declaración if.

Si la Test-Expression no es True, ninguna de las Statements se ejecuta.

Para hacer que nuestro código se vea más legible y organizado, podemos usar una indentación de 4 espacios o de 2 espacios.

Ejemplo: if la declaración en Bash

echo -n "Enter numnber : "
read n
 
rem=$(( $n % 2 ))
 
if [ $rem -eq 0 ]
then
  echo "$n is even number"
fi

Resultado:

Enter numnber : 4
4 is even number

Acepta un número del usuario y da la salida sólo si el número es par.

Si el número es par, el resto es cero cuando el número se divide entre dos. Por lo tanto, la expresión de prueba es True para que se ejecute la declaración echo.

if ... else Declaración en Bash

Sintaxis de la declaración if ... else

if Test-Expression
then
  Statements-1

else
  Statements-2
fi

En este ejemplo, si la Test-Expression es True, se ejecuta la Statements-1; de lo contrario, se ejecuta la Statements-2. Para terminar la declaración if ... else, se usa la palabra clave fi.

Ejemplo: if...else Declaración en Bash

echo -n "Enter numnber : "
read n
 
rem=$(( $n % 2 ))
 
if [ $rem -eq 0 ]
then
  echo "$n is even number"
else
  echo "$n is odd number"
fi

Resultado:

Enter numnber : 5
4 is odd number

Acepta un número del usuario y da salida dependiendo de si el número de entrada es exactamente divisible por 2 o no.

Si el número es par, el resto es cero cuando el número se divide entre dos; por lo tanto, la expresión de prueba es True y la declaración echo “$n es un número par” se ejecuta.

Si el número es impar, el resto no es cero; por lo tanto, la expresión de prueba es False, y la frase echo "$n is odd number" se ejecuta.

if...elif...else Declaración en Bash

Sintaxis de la declaración if...elif...else

if Test-Expression-1
then
  Statements-1
elif Test-Expression-2
then
  Statements-2

else
  Statements-3
fi

Si la Test-Expression-1 es True, la Statements-1 es ejecutada. Si la Test-Expression-2 es True, la Statements-2 se ejecuta.

Si ninguna de las expresiones de prueba es True, se ejecuta la Statements-3.

Podemos tener tantas declaraciones elif como queramos, y la declaración else es opcional.

Ejemplo: if...elif...else Declaración en Bash

echo -n "Enter the value of a: "
read a

echo -n "Enter the value of b: "
read b

if [ $a -lt $b ]
then
   echo "a is less than b"
   
elif [ $a -gt $b ]
then
   echo "a is greater than b"

else
   echo "a is equal to b"
fi

Resultado:

Enter the value of a: 4
Enter the value of b: 4
a is equal to b

Acepta dos números como entrada del usuario e imprime el resultado en base a cuál de las expresiones de prueba es verdadera.

Si a<b, el programa imprime a is less than b.

Si a>b, el programa imprime a is greater than b.

Si ninguna de las declaraciones condicionales es verdadera, el programa imprime a is equal to b.

Anidado if declaración en Bash

Cuando una declaración if se coloca dentro de otra declaración if, se llama una declaración if anidada.

echo -n "Enter numnber : "
read a
 
rem=$(( $a % 2 ))
 
if [ $rem -eq 0 ]
then
  if [ $a -gt 10 ]
  then
    echo "$a is even number and greater than 10."
	
  else
    echo "$a is even number and less than 10."
  fi
else
  echo "$a is odd number"
fi

Resultado:

Enter numnber : 46
46 is even number and greater than 10.

Demuestra el uso de la declaración if anidada. Si el número es exactamente divisible entre 2 y mayor que 10, echo "$a is even number and greater than 10." Se ejecuta la declaración.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn