Puede encontrar la definición de -lt
y -gt
en la documentación del test
comando ( man test
), o en la documentación de bash ya que test
es un comando incorporado en bash (como en la mayoría de los otros shells).
-lt
y -gt
son comparaciones numéricas (menor que [y no igual], mayor que [y no igual]). También hay operadores menores / mayores o iguales -le
y -ge
, operadores iguales y no iguales -eq
y -ne
. Estos son operadores numéricos, por lo que habrá un error si alguno de los lados no es un número y 9
se considera menor que 10
.
La razón por la que -lt
se usan nombres como en lugar de lo habitual <
es que el personaje <
se interpretaría como una redirección. Los operadores =
y !=
también existen, pero realizan una comparación de cadenas: test 00 -eq 0
es verdadero mientras que test 00 = 0
es falso.
Algunos shells, incluido bash, también tienen operadores <
y >
realizan una comparación lexicográfica de cadenas, por lo que test 9 \< 10
es falso porque 9
está ordenado antes 1
(la barra invertida evita que el carácter <
sea interpretado como un operador de redireccionamiento). Estos shells también ofrecen la sintaxis de doble paréntesis para las pruebas, por ejemplo [[ 9 < 10 ]]
(en lugar de [ 9 \< 10 ]
), que no pueden tener redirecciones en el interior, por lo que <
no es necesario citarlas.
echo
declaraciones en el código responden a su pregunta.