Non sono addestrato in Linux, ma posso cavarmela con alcune ricerche di documenti, ma sono perplesso.Shell: "a -lt b" non significa vero se a è minore di b?
Ho trovato uno script che consente di impostare la data sul mio router dd wrt all'avvio, ma solo se la data corrente è inferiore alla data memorizzata. Posso condividere l'intero script, se lo desideri, ma si riduce a questa affermazione che non si valuta come vera quando mi aspetto che lo faccia. Sto mettendo i letterali, piuttosto che le variabili, e ancora non restituire true, viene eseguito il "resto" dichiarazione:
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
mi si aspetterebbe "il primo sembra inferiore al secondo", ma questo non è il caso ... È un problema di overflow? Ho provato a fare una stringa confrontare come questo:
if [ x021715402012 -lt x021815402012 ]
e provato a mettere tra virgolette:
if [ "x021715402012" -lt "x021815402012" ]
esegue sempre l'altro. "a -lt b
" non significa vero se a è minore di b?
Qualsiasi comprensione di questo sarebbe apprezzato, sono perplesso!
Funziona bene in 'bash' sul mio Mac. – kindall
Hmm stampa "il primo sembra meno del secondo" per me quando provo il tuo esempio. Che versione bash o sh è questa? Se vuoi maggiori informazioni su -lt ecc. Puoi controllare 'help test',' help ['o' man test'. –
Funziona anche bene sul mio router openwrt. Ma ho chiaramente un'implementazione diversa, perché la mia dà "brutto numero" con "x" incluso. –