Iniciando com os argumentos bash: -lt e -gt

17

Estou começando com o bash e descobri o seguinte:

if test $first -lt $second
then
  echo $first is lower than $second
else
  if test $first -gt $second
  then
    echo $first is higher than $second
  else
    echo $first and $second are equals
  fi
fi

Para ler o script e executá-lo, eu sei o que ele faz, mas não o que -lt e -gt são para.

Alguém pode me dizer qual é o nome desse tipo de 'ferramenta' e o que eles (-lt e -gt) fazem? Obrigado!

    
por user47579 13.03.2014 / 16:55

4 respostas

26

É a abreviação de less than e greater than . É usado para comparação de números inteiros no bash. Você pode ler mais digitando man test :

   ....
   INTEGER1 -gt INTEGER2
          INTEGER1 is greater than INTEGER2
   ....
   INTEGER1 -lt INTEGER2
          INTEGER1 is less than INTEGER2
   ....
    
por 13.03.2014 / 16:59
7

Você pode encontrar a definição de -lt e -gt na documentação do test command ( man test ), ou na documentação do bash, pois test é um comando interno no bash (como na maioria dos outros shells).

-lt e -gt são comparações numéricas (menor que [e não igual], maior que [e não igual]). Também há operadores de menor / maior ou igual -le e -ge e operadores iguais e não iguais -eq e -ne . Estes são operadores numéricos, portanto, haverá um erro se um dos lados não for um número e 9 for considerado menor que 10 .

A razão pela qual os nomes como -lt são usados, em vez do usual < , é que o caractere < seria interpretado como um redirecionamento. Os operadores = e != também existem, mas eles realizam uma comparação de sequência: test 00 -eq 0 é true, enquanto test 00 = 0 é falso.

Alguns shells, incluindo bash, também têm operadores < e > que executam uma comparação lexicográfica de string, portanto test 9 \< 10 é false porque 9 é classificado antes de 1 (a contrabarra impede o caractere < de ser interpretado como um operador de redirecionamento). Estas cascas também oferecem a sintaxe de duplo colchete para testes, por ex. [[ 9 < 10 ]] (em oposição a [ 9 \< 10 ] ), que não pode ter redirecionamentos para que o < não precise ser citado.

    
por 14.03.2014 / 02:04
4

Eles são apenas operadores.

Simplesmente: gt e lt significa > (maior que) e < (menos de).

Você pode procurar aqui para obter mais informações sobre operadores:

    
por 13.03.2014 / 16:59
2

Estes são operadores de comparação

-lt = menor que

-gt = maior que

Você pode verificar esta página para mais detalhes:

http://tldp.org/LDP/abs/html/comparison-ops.html

    
por 13.03.2014 / 17:00

Tags