Você pode encontrar a definição -lt
e -gt
na documentação do test
comando ( 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]). Existem também operadores menos / maiores ou iguais -le
e -ge
, e operadores iguais e não iguais -eq
e -ne
. Como são operadores numéricos, 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 nomes como -lt
são usados e não o habitual <
é que o caractere <
seria interpretado como um redirecionamento. Os operadores =
e !=
também existem, mas eles realizam uma comparação de cadeias: test 00 -eq 0
é verdadeira enquanto test 00 = 0
é falsa.
Alguns shells, incluindo o bash, também possuem operadores <
e >
que realizam uma comparação lexicográfica de strings, portanto, isso test 9 \< 10
é falso porque 9
foi classificado anteriormente 1
(a barra invertida impede que o caractere <
seja interpretado como um operador de redirecionamento). Esses shells também oferecem a sintaxe de colchetes duplos para testes, por exemplo [[ 9 < 10 ]]
(ao contrário de [ 9 \< 10 ]
), que não podem ter redirecionamentos internos para <
que não precisem ser citados.
echo
instruções no código respondem à sua pergunta.