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.