No estoy capacitado en Linux, pero puedo hacer algunas búsquedas de documentos, pero estoy perplejo.Shell: ¿"a -lt b" no significa verdadero si a es menor que b?
Encontré una secuencia de comandos que ayuda a establecer la fecha en mi enrutador dd wrt cuando se inicia, pero solo si la fecha actual es menor que la fecha almacenada. Puedo compartir todo el script si lo desea, pero se reduce a esta afirmación que no se evalúa como verdadera cuando lo espero. Estoy poniendo en los literales, en lugar de las variables, y todavía no vuelve verdadera, ejecuta el "otro" declaración:
if [ 021715402012 -lt 021815402012 ]
then
echo "the first seems less than the second"
else
echo "the first does not seem less than the second for some reason"
fi
Yo esperaría "la primera parece menor que el segundo", pero esto no es el caso ... ¿Es un problema de desbordamiento? Traté de hacer que una cadena comparar de esta manera:
if [ x021715402012 -lt x021815402012 ]
y trató de ponerlo entre comillas:
if [ "x021715402012" -lt "x021815402012" ]
siempre ejecuta la persona. ¿No significa "a -lt b
" verdadero si a es menor que b?
¡Cualquier apreciación de esto sería apreciada, estoy perplejo!
Funciona bien en 'bash' en mi Mac. – kindall
Hmm imprime "la primera parece menos que la segunda" para mí cuando pruebo tu ejemplo. ¿Qué versión de bash o sh es esta? Si desea obtener más información sobre -lt, etc., puede marcar 'help test',' help'' o 'man test'. –
También funciona bien en mi enrutador openwrt. Pero claramente tengo una implementación diferente que tú haces, porque la mía da "mala cantidad" con la 'x' incluida. –