The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"bash откидывает  ведущие нули, как запретить"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"bash откидывает  ведущие нули, как запретить"  +/
Сообщение от nikos (??) on 24-Июн-09, 13:05 
то есть  скрипт получает по snmp текстовое  значение вида  005  или 607  или 5  при этом для дальшейшей логики  действий  005  и 5  разные значения. Как убедить это  не откидывать  ведущие 0 ? ( то есть оставлять переменную текстом)
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "bash откидывает  ведущие нули, как запретить"  +/
Сообщение от Pahanivo email(ok) on 24-Июн-09, 14:06 
>то есть  скрипт получает по snmp текстовое  значение вида  
>005  или 607  или 5  при этом для
>дальшейшей логики  действий  005  и 5  разные
>значения. Как убедить это  не откидывать  ведущие 0 ?
>( то есть оставлять переменную текстом)

научится писать скрипты? ))

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "bash откидывает  ведущие нули, как запретить"  +/
Сообщение от nikos (??) on 24-Июн-09, 14:36 
>>то есть  скрипт получает по snmp текстовое  значение вида  
>>005  или 607  или 5  при этом для
>>дальшейшей логики  действий  005  и 5  разные
>>значения. Как убедить это  не откидывать  ведущие 0 ?
>>( то есть оставлять переменную текстом)
>
>научится писать скрипты? ))

Не поверите -  совсем не первый  скрипт, несколько десятков работают на боевых серверах. С тем, что  явную цифру  надо воспринять как текст столкнулся в первый  раз.
Возможно я не прав, но  вся найденная информация  говорит -  Bash сам определяет тип переменной, меняя его в зависимости от значений.
вот такой извратный  Bash там стоит, что  
f="0001"; echo $f
выводит 1
на локальной  машине  все  нормально - и в ответ выводится
0001
попробую поднять версию до текущей - может полегчает


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "попробуй джага-джага...."  +/
Сообщение от Andrey Mitrofanov on 24-Июн-09, 15:11 
>вот такой извратный  Bash там стоит, что
>f="0001"; echo $f
>выводит 1
>на локальной  машине  все  нормально - и в ответ
>выводится
>0001
>попробую поднять версию до текущей - может полегчает

Попробуй man bash, что полегчает не обещаю.

$ f="0001"; echo $f
0001
$ declare -i f="0001"; echo $f
1
$ declare +i f="0001"; echo $f
0001
$ _

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "попробуй джага-джага...."  +/
Сообщение от nikos (??) on 24-Июн-09, 16:14 
>[оверквотинг удален]
>
>Попробуй man bash, что полегчает не обещаю.
>
>$ f="0001"; echo $f
>0001
>$ declare -i f="0001"; echo $f
>1
>$ declare +i f="0001"; echo $f
>0001
>$ _

Уф и правда  полегчало ...  огромное  спасибо. man bash это конечно хорошо, но слишком безразмерно ( зная о declare  можно и прочитать man  в этой части)


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "впрочем, по форумам побираться - тоже вариант"  +/
Сообщение от Andrey Mitrofanov on 24-Июн-09, 16:34 
>man bash это конечно хорошо, но слишком безразмерно ( зная о declare  можно и прочитать man  в этой части)

Встани и и... Не то. Умри, неве... Опять не то. .........

Не поверишь, я не _знал_, но нашёл.

Гипотеза: проблема string vs integer, man bash -> поиск integer, увидел arythm.expantion и integer attribute of the variable set... продолжил поиск по "attribu", увидел ссылки на "declare -i", пошёл к его определению и почитал, запустил bash - нарисовал пример, что выше (да, я его редактировал -- в реале было на пару команд больше, пока игрался).

И никакого фокуса, правда? (+Никакого ответа на реплику №0 "аааа, памагитя. у меня тут. вот. блин!". Есть код -- его можно и поотлаживать.)

---"Учись, студент!" ... О, вот оно.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "bash откидывает  ведущие нули, как запретить"  +/
Сообщение от phpcoder email(??) on 24-Июн-09, 15:03 
>то есть  скрипт получает по snmp текстовое  значение вида  
>005  или 607  или 5  при этом для
>дальшейшей логики  действий  005  и 5  разные
>значения. Как убедить это  не откидывать  ведущие 0 ?
>( то есть оставлять переменную текстом)

printf '%03d\n' 5


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру