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.