Ответ 1
Оболочка пытается интерпретировать 08 как восьмеричное число, поскольку оно начинается с нуля. Однако только цифры 0-7 допускаются в восьмеричном формате, так как десятичное число 8 равно восьмеричному 010. Следовательно, 08 не является допустимым числом и причина ошибки.
Отдельные скобки - это "режим совместимости" с sh, а sh не знает о восьмеричных числах.
Итак, если вы используете одиночные квадратные скобки, "010" будет интерпретироваться как 10, а с двойными квадратными скобками "010" будет интерпретироваться как 8.
Если вы используете одиночные квадратные скобки, "08" будет интерпретироваться как 8, а с двойными квадратными скобками - это недопустимое число и приведет к ошибке.
Вы можете избежать ошибки, используя описанное здесь решение: fooobar.com/info/182351/...
if [[ ${vara#0} -lt ${varb#0} ]]
или
if [[ $((10#$vara)) -lt $((10#$varb)) ]]