Оболочка: «a -lt b» не означает истину, если a меньше b?

Я не обучен Linux, но я могу кое-что найти в документах, но Я в тупике.

Я нашел сценарий, который помогает установить дату на моем маршрутизаторе dd wrt при его запуске, но только если текущая дата меньше сохраненной даты. Я могу поделиться всем сценарием, если хотите, но все сводится к тому, что это утверждение не принимает истинное значение, когда я этого ожидаю. Я вставляю литералы, а не переменные, и он по-прежнему не возвращает истину, он выполняет оператор «else»:

 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

Я ожидал, что «первое кажется меньше второго», но это не так. ... Это проблема переполнения? Я попытался сравнить его со строкой следующим образом:

if [ x021715402012 -lt x021815402012 ]

и попытался заключить его в кавычки:

if [ "x021715402012" -lt "x021815402012" ]

он всегда выполняет else. Разве " a -lt b " не означает истину, если a меньше b?

Любое понимание этого будет оценено, я в тупике!

6
задан Jonathan Leffler 19 February 2012 в 01:53
поделиться