Unix / Linux - Exemplo de operadores relacionais de shell

Bourne Shell oferece suporte aos seguintes operadores relacionais que são específicos para valores numéricos. Esses operadores não funcionam para valores de string, a menos que seu valor seja numérico.

Assumir variável a contém 10 e variável b detém 20 então -

Operador Descrição Exemplo
-eq Verifica se os valores de dois operandos são iguais ou não; se sim, então a condição se torna verdadeira. [$ a -eq $ b] não é verdade.
-ne Verifica se os valores de dois operandos são iguais ou não; se os valores não forem iguais, a condição se torna verdadeira. [$ a -ne $ b] é verdade.
-gt Verifica se o valor do operando esquerdo é maior que o valor do operando direito; se sim, então a condição se torna verdadeira. [$ a -gt $ b] não é verdade.
-lt Verifica se o valor do operando esquerdo é menor que o valor do operando direito; se sim, então a condição se torna verdadeira. [$ a -lt $ b] é verdadeiro.
-ge Verifica se o valor do operando esquerdo é maior ou igual ao valor do operando direito; se sim, então a condição se torna verdadeira. [$ a -ge $ b] não é verdade.
-le Verifica se o valor do operando esquerdo é menor ou igual ao valor do operando direito; se sim, então a condição se torna verdadeira. [$ a -le $ b] é verdade.

É muito importante entender que todas as expressões condicionais devem ser colocadas entre colchetes com espaços ao redor. Por exemplo,[ $a <= $b ] está correto enquanto, [$a <= $b] está incorreto.

Exemplo

Aqui está um exemplo que usa todos os operadores relacionais -

#!/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

O script acima irá gerar o seguinte 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

Os pontos a seguir precisam ser considerados ao trabalhar com operadores relacionais -

  • Deve haver espaços entre os operadores e as expressões. Por exemplo, 2 + 2 não está correto; deve ser escrito como 2 + 2.

  • if...then...else...fi declaração é uma declaração de tomada de decisão que foi explicada no próximo capítulo.

operadores-unix-basic.htm