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.