Unix / Linux - Ejemplo de operadores relacionales de Shell

Bourne Shell admite los siguientes operadores relacionales que son específicos de valores numéricos. Estos operadores no funcionan para valores de cadena a menos que su valor sea numérico.

Asumir variable a tiene 10 y variable b sostiene 20 entonces -

Operador Descripción Ejemplo
-eq Comprueba si el valor de dos operandos es igual o no; si es así, entonces la condición se vuelve verdadera. [$ a -eq $ b] no es cierto.
-ne Comprueba si el valor de dos operandos es igual o no; si los valores no son iguales, la condición se cumple. [$ a -ne $ b] es cierto.
-gt Comprueba si el valor del operando izquierdo es mayor que el valor del operando derecho; si es así, entonces la condición se vuelve verdadera. [$ a -gt $ b] no es cierto.
-lt Comprueba si el valor del operando izquierdo es menor que el valor del operando derecho; si es así, entonces la condición se vuelve verdadera. [$ a -lt $ b] es cierto.
-ge Comprueba si el valor del operando izquierdo es mayor o igual que el valor del operando derecho; si es así, entonces la condición se vuelve verdadera. [$ a -ge $ b] no es cierto.
-le Comprueba si el valor del operando izquierdo es menor o igual que el valor del operando derecho; si es así, entonces la condición se vuelve verdadera. [$ a -le $ b] es cierto.

Es muy importante comprender que todas las expresiones condicionales deben colocarse entre llaves cuadradas con espacios alrededor. Por ejemplo,[ $a <= $b ] es correcto mientras que, [$a <= $b] Es incorrecto.

Ejemplo

Aquí hay un ejemplo que usa todos los operadores relacionales:

#!/bin/sh

a=10
b=20

if [ $a -eq $b ]
then
   echo "$a -eq $b : a is equal to b"
else
   echo "$a -eq $b: a is not equal to b"
fi

if [ $a -ne $b ]
then
   echo "$a -ne $b: a is not equal to b"
else
   echo "$a -ne $b : a is equal to b"
fi

if [ $a -gt $b ]
then
   echo "$a -gt $b: a is greater than b"
else
   echo "$a -gt $b: a is not greater than b"
fi

if [ $a -lt $b ]
then
   echo "$a -lt $b: a is less than b"
else
   echo "$a -lt $b: a is not less than b"
fi

if [ $a -ge $b ]
then
   echo "$a -ge $b: a is greater or  equal to b"
else
   echo "$a -ge $b: a is not greater or equal to b"
fi

if [ $a -le $b ]
then
   echo "$a -le $b: a is less or  equal to b"
else
   echo "$a -le $b: a is not less or equal to b"
fi

El script anterior generará el siguiente resultado:

10 -eq 20: a is not equal to b
10 -ne 20: a is not equal to b
10 -gt 20: a is not greater than b
10 -lt 20: a is less than b
10 -ge 20: a is not greater or equal to b
10 -le 20: a is less or  equal to b

Los siguientes puntos deben tenerse en cuenta al trabajar con operadores relacionales:

  • Debe haber espacios entre los operadores y las expresiones. Por ejemplo, 2 + 2 no es correcto; debe escribirse como 2 + 2.

  • if...then...else...fi declaración es una declaración de toma de decisiones que se explica en el capítulo siguiente.

operadores-básicos-unix.htm