nixp.ru v3.0

29 мая 2017,
понедельник,
16:09:08 MSK

DevOps с компанией «Флант»
kolen написал 17 января 2013 года в 15:10 (1307 просмотров) Ведет себя неопределенно; открыл 2 темы в форуме, оставил 4 комментария на сайте.

И снова обращаюсь к Вам за помощью.

При выполнении скрипта (перечисление месяцев) вылезают ошибки 08: value too great for base (error token is «08») и  09: value too great for base (error token is «09»).

С чем это связано я разобрался, только вот исправить не получается. Не работает команда 10#08 и 10#09.

month=$(( 10#$month )) тоже не работает.

 

 

fhunter

08 и 09 (и вообще любое число начинающееся с 0) shell воспринимает как восьмеричное.

arhimedoffs

Не могу сказать определенно, но Ваше последнее предложение у меня сработало без проблем

$ month=08
$ echo $month
08
$ month=$(( 10#$month ))
$ echo $month
8


 

kolen

Да работает, вот только мне нужны 0 перед месяцами (01 02 03 04 05 06 07 08 09 10 11 12). А так они убираются и мои файлы читаются неправильно.

arhimedoffs
$ month=08
$ echo $month
08
$ month=$(( 10#$month ))
$ echo $month
8
$ month=$( printf "%02d\n" $month )
$ echo $month
08 


Можно и добавить 0 ведущий и убрать, я так понимаю что ошибка рода «value too great for base» вылазит при арифметический действиях с числами. Итого: считали, конвертировали без ведущего 0, посчитали, добавили ведущий 0, вывели.

Или я не совсем понял вопроса.

kolen

Спасибо огромное. Все гениальное просто!))