Bash 12 - 08 Значение слишком велико для базы (токен ошибки «08»)

Итак, я пытаюсь вычислить 12-08 (не 12-8) и получить следующую ошибку:

let: 08: value too great for base (error token is "08")

Вот пример кода:

first=12
second=08
if [[ ($first > $second) ]]; then
    let fin=first-second
else
    let fin=second-first
fi

PS Извините за промежутки

2
задан 9 May 2016 в 14:15

1 ответ

Если Вы предшествуете числу 0, bash обработки число как восьмеричному. Как восьмеричный основной 8 с цифрами в пределах от от 0 до 7, 08 вне диапазона для восьмеричного.

Теперь у Вас есть две опции сделать десятичное вычисление:

  • Опускают предшествовать 0:

    $ echo $(( 12 - 8 )) 
    4
    
  • Явно упоминание базируются как десятичное число 10#:

    $ echo $(( 12 - 10#08 )) 
    4
    
7
ответ дан 10 May 2016 в 00:15
  • 1
    Попробованный, что, и reboot, посмотрите отредактированный вопрос и комментарии в соответствии с ответом @Rinzwind. – Ring Ø 21 October 2017 в 22:28

Другие вопросы по тегам:

Похожие вопросы: