Estoy comenzando con bash y encontré lo siguiente:
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 leer el script y ejecutarlo, sé lo que hace, pero no para qué sirven -lt y -gt.
¿Alguien puede decirme cuál es el nombre de ese tipo de «herramienta» y lo que hacen (-lt y -gt)? Gracias!
Comentarios
Respuesta
Es la abreviatura de less than
y greater than
. Se utiliza para la comparación de enteros en bash. Puede leer más escribiendo man test
:
.... INTEGER1 -gt INTEGER2 INTEGER1 is greater than INTEGER2 .... INTEGER1 -lt INTEGER2 INTEGER1 is less than INTEGER2 ....
Respuesta
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 integrado 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 menor / mayor o igual -le
y -ge
, y 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 ered menos que 10
.
El motivo por el que se utilizan nombres como -lt
en lugar del habitual <
es que el carácter <
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 true mientras que test 00 = 0
es falso.
Algunas shells, incluido bash, también tienen operadores <
y >
que realiza una comparación lexicográfica de cadenas, por lo que test 9 \< 10
es falso porque 9
se ordena antes que 1
(la barra invertida evita que el carácter <
se interprete como un operador de redirección). Estos shells también ofrecen la sintaxis de doble corchete para pruebas, p. Ej. [[ 9 < 10 ]]
(a diferencia de [ 9 \< 10 ]
), que «no puede tener redirecciones internas, por lo que <
no necesita ser citado.
Respuesta
Son solo operadores.
Simplemente: gt
y lt
significan> (mayor que) y < (menor que).
Puede mirar aquí para obtener más información sobre los operadores:
Respuesta
Estos son operadores de comparación
-lt = menor que
-gt = mayor que
Puede consultar esta página para más detalles:
echo
declaraciones en el código responden a su pregunta.