Страница 2 из 4
Re: Значение переменной вывести в название другой переменной.
Добавлено: 27 авг 2016, 14:04
23q
vqd писал(а):23q писал(а):сам спросил-сам ответил.
execute это больше для отладки
Для подобных вещей существует :parse
Код: Выделить всё
[admin@Meg_Router] > :global tmp test
[admin@Meg_Router] > [:parse ":global $tmp 456"]
[admin@Meg_Router] > environment print
test=456
tmp="test"
спасибо. после того, как мы ее таким образом создали, как потом новую переменную обработать в скрипте, например сравнив со значением?
Re: Значение переменной вывести в название другой переменной.
Добавлено: 27 авг 2016, 14:31
vqd
не понял вопроса
Код: Выделить всё
[admin@Uzer-1100] > :global tmp test
[admin@Uzer-1100] > [:parse ":global $tmp 456"]
[admin@Uzer-1100] > :put ($test > 500)
false
Re: Значение переменной вывести в название другой переменной.
Добавлено: 27 авг 2016, 15:43
23q
vqd писал(а):не понял вопроса
Код: Выделить всё
[admin@Uzer-1100] > :global tmp test
[admin@Uzer-1100] > [:parse ":global $tmp 456"]
[admin@Uzer-1100] > :put ($test > 500)
false
допустим есть скрипт.
Код: Выделить всё
:global tmp test;
:log info $tmp
[:parse ":global $tmp 456"]
:if ($test > 500) do={log info 1} else={log info 2}
как сделать так, что-бы изменять в этом скрипте имя "test" только один раз, в строчке ":global tmp test;", а дальше все отработало как надо. В данном же случае нужно изменять это имя в двух строках: ":global tmp test;" и ":if ($test > 500) do={log info 1} else={log info 2}"
Re: Значение переменной вывести в название другой переменной.
Добавлено: 27 авг 2016, 19:28
vqd
После того как вы создали переменную имя ее изменить нельзя, только пересоздать с новым именем
Не буду спрашивать зачем ибо как то сам писал скрипт который генерирует скрипт для системы агригации в зависимости от количества подключенных внешних каналов
Re: Значение переменной вывести в название другой переменной.
Добавлено: 15 сен 2016, 22:33
ERge
может типа так?
Код: Выделить всё
[:parse ":if ($tmp > 500) do={log info 1} else={log info 2}"]
PS: не пойму только для чего такое вообще надо!?
Re: Значение переменной вывести в название другой переменной.
Добавлено: 01 сен 2017, 12:02
enternight
на микроте командой /interface ethernet print stats from=WAN выдается статистика по порту
там есть параметр rx-bytes
у него значение указывается с пробелом
например 17 280 997 853
как его перевести в человеческий вид 17280997853 чтоб потом можно было как с нормальным числом работать?
Код: Выделить всё
[enter@enter] > :global rxbyte [/interface ethernet get WAN rx-bytes];
[enter@enter] > :put $rxbyte;
17 575 300 924
подсмотрел в hex-редакторе
пробел между цифрами - это значение 20
Re: Значение переменной вывести в название другой переменной.
Добавлено: 01 сен 2017, 20:26
podarok66
enternight писал(а):как его перевести в человеческий вид 17280997853 чтоб потом можно было как с нормальным числом работать?
Если первоначально подойти по-человечески, то и на выходе будет получаться число:
Код: Выделить всё
:global rxbyte [/interface get [/interface find name=WAN] rx-bytes];
Вроде как в каждой конфигурации подсказку увидеть можно. Хотя, признаться, сначала я тоже подвис, повторив вашу команду
Re: Значение переменной вывести в название другой переменной.
Добавлено: 03 сен 2017, 14:40
enternight
Спасибо большое за ответ, но что то пошло не так
Код: Выделить всё
[enter@enter home 815] > :global rxbyte [/interface get [/interface find name=WAN] rx-bytes]
input does not match any value of value-name
Если попробовать подставить пропущенный "ethernet", тогда получается, но смысл не меняется, опять те же пробелы.
Код: Выделить всё
[enter@enter home 815] > :global rxbyte [/interface ethernet get [/interface find name=WAN] rx-bytes]
[enter@enter home 815] > environment print
rxbyte={"92 347 739"}
[enter@enter home 815] > :put $rxbyte
92 347 739
Re: Значение переменной вывести в название другой переменной.
Добавлено: 03 сен 2017, 16:20
podarok66
Код: Выделить всё
{:local rx [/interface get [find name=ether4] rx-byte] ;
:put $rx}
40353642210
Ага, вот эта ошибочка вкралась при переносе строки. Вместо
rx-bytes надо использовать
rx-byte
Re: Значение переменной вывести в название другой переменной.
Добавлено: 03 сен 2017, 19:52
enternight
Огромное спасибо!
Если не трудно, поясните мне, что я делал не так? Можно и в личку, но я думаю, этот пример еще кому то кроме меня может стать поучительным!
Код: Выделить всё
[enter@enter home 815] > :global rxbyte [/interface get [find name=WAN] rx-byte]
[enter@enter home 815] > :put $rxbyte
6769235359