то есть скрипт получает по snmp текстовое значение вида 005 или 607 или 5 при этом для дальшейшей логики действий 005 и 5 разные значения. Как убедить это не откидывать ведущие 0 ? ( то есть оставлять переменную текстом)
>то есть скрипт получает по snmp текстовое значение вида
>005 или 607 или 5 при этом для
>дальшейшей логики действий 005 и 5 разные
>значения. Как убедить это не откидывать ведущие 0 ?
>( то есть оставлять переменную текстом)научится писать скрипты? ))
>>то есть скрипт получает по snmp текстовое значение вида
>>005 или 607 или 5 при этом для
>>дальшейшей логики действий 005 и 5 разные
>>значения. Как убедить это не откидывать ведущие 0 ?
>>( то есть оставлять переменную текстом)
>
>научится писать скрипты? ))Не поверите - совсем не первый скрипт, несколько десятков работают на боевых серверах. С тем, что явную цифру надо воспринять как текст столкнулся в первый раз.
Возможно я не прав, но вся найденная информация говорит - Bash сам определяет тип переменной, меняя его в зависимости от значений.
вот такой извратный Bash там стоит, что
f="0001"; echo $f
выводит 1
на локальной машине все нормально - и в ответ выводится
0001
попробую поднять версию до текущей - может полегчает
>вот такой извратный 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
$ _
>[оверквотинг удален]
>
>Попробуй 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 в этой части)
>man bash это конечно хорошо, но слишком безразмерно ( зная о declare можно и прочитать man в этой части)Встани и и... Не то. Умри, неве... Опять не то. .........
Не поверишь, я не _знал_, но нашёл.
Гипотеза: проблема string vs integer, man bash -> поиск integer, увидел arythm.expantion и integer attribute of the variable set... продолжил поиск по "attribu", увидел ссылки на "declare -i", пошёл к его определению и почитал, запустил bash - нарисовал пример, что выше (да, я его редактировал -- в реале было на пару команд больше, пока игрался).
И никакого фокуса, правда? (+Никакого ответа на реплику №0 "аааа, памагитя. у меня тут. вот. блин!". Есть код -- его можно и поотлаживать.)
---"Учись, студент!" ... О, вот оно.
>то есть скрипт получает по snmp текстовое значение вида
>005 или 607 или 5 при этом для
>дальшейшей логики действий 005 и 5 разные
>значения. Как убедить это не откидывать ведущие 0 ?
>( то есть оставлять переменную текстом)printf '%03d\n' 5