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

Модератор: Модераторы разделов

pas
Сообщения: 597
Статус: маньяк
ОС: Gentoo

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

Сообщение pas »

Есть скриптик следующего содержания(выдержка):

Код: Выделить всё

mount=`date "+%m"`
#tempmou=$((mount+1))
#mount=8
#echo $mount $tempmou
year=`date "+%Y"`
day=`date "+%-e"`
prevyear=$(($year-1))
#echo $prevyear
prevmount=$(($mount-1)) # вот это строка 13 в которой происходит первая ошибка
#echo $prevmount
nextyear=$(($year+1))
nextmount=$(($mount+1))

До августа все работало нормально, а первого числа августа стала появляться такая ошибка:
[pas@localhost ~]$ /home/pas/dist/karamba/Calendar/calend
/home/pas/dist/karamba/Calendar/calend: line 13: 08: value too great for base (error token is "08")
/home/pas/dist/karamba/Calendar/calend: line 16: 08: value too great for base (error token is "08")
/home/pas/dist/karamba/Calendar/metall.png
[pas@localhost ~]$

Если вместо mount=`date "+%m"` поставить mount=`date "+%-m"`, то все работает нормально. Т.е. проблемма заключается именно в нуле и именно когда цифра "08", на предыдущие и девятку он так не реагирует.
В принципе скрипт я уже поправил, но хотелось бы разобраться из-за чего такой косяк выскакивает?
Может, кто ответит?
PS: как я выяснил, это происходит из-за того, что если впереди стоит ноль, то считается, что число в восьмеричной с-ме счисления, и вопрос несколько меняется, а можно ли как то указать, что число в десятичной с-ме?
Про работоспособность с девяткой мне видимо приглючилось.
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

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

Сообщение Rootlexx »

pas писал(а):
01.08.2008 06:00
prevmount=$(($mount-1))

Укажите форму явно:

Код: Выделить всё

prevmount=$((10#$mount-1))
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

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

Сообщение uptime »

pas писал(а):
01.08.2008 06:00
...
Про работоспособность с девяткой мне видимо приглючилось.


Странненько... В восмеричной системе невозможны числа 08 и 09.

PS ну и имена вы переменным даёте... Кто ж догадается, что mount не связано с монтированием устройств, а просто месяц (month).
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

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

Сообщение Rootlexx »

uptime писал(а):
01.08.2008 14:29
PS ну и имена вы переменным даёте... Кто ж догадается, что mount не связано с монтированием устройств, а просто месяц (month).

Ага, я тоже сначала не понял, причём здесь монтирование :huh: .
Спасибо сказали:
pas
Сообщения: 597
Статус: маньяк
ОС: Gentoo

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

Сообщение pas »

uptime писал(а):
01.08.2008 14:29
PS ну и имена вы переменным даёте... Кто ж догадается, что mount не связано с монтированием устройств, а просто месяц (month).

Да, с импортными языками у меня плохо.
Сомнительно, что кто-то его вообще увидит :-)
Спасибо сказали: