Как обратиться к переменным созданным через :execute ":global e 555"

Здесь выкладываем скрипты
Ответить
MTadmin
Сообщения: 4
Зарегистрирован: 03 авг 2018, 16:18

20 авг 2018, 20:36

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

#1.  Стандарт
:global a 111;
:log info "1. Variable ($a)";

#2.  Стандарт
:global b;
:set $b 222;
:log info "2. Variable ($b)";

#3.  Вероятно создается :local переменная, 
#    можно обратиться в скрипте, 
#    но не сохраняется в environment 
:execute [:set $c 333];
:log info "3. Variable ($c)";

#4. Есть в env, не получается обратиться.
:execute [:global d 444];
:log info "4. Variable ($d)";

#5. Есть в env, не получается обратиться.
:execute ":global e 555";
:execute [:log info "5. Variable ($e)"];

#6. Есть в env, не получается обратиться.
[:parse ":global f 666"]
:log info "6. Variable ($f)";

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

> /log print
script,info 1. Variable (111)
script,info 2. Variable (222) 
script,info 3. Variable (333) 
script,info 4. Variable () 
script,info 5. Variable () 
script,info 6. Variable () 

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

> /environment print 
a=111
b=222

d=444
e=555
f=666
Есть идеи как обратиться к переменным созданным через :execute ":global e 555" ?

Необходимость такой конструкции возникает, когда надо создать глобальную переменную имя которой создано конкатенацией, особенно актуально внутри циков foreach.

Парадокс, но переменная в /environment создается, а обратиться к ней не выходит.

Справедливо для ROS 6.42.6:
912UAG-2HPnD
2011UiAS-2HnD
К слову с утра вышла ROS 6.42.7, на ней ещё не проверял.


vqd
Модератор
Сообщения: 3433
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

20 авг 2018, 20:42

Примеры завтра ибо с телефона и спать уже пора


Есть интересная задача и бюджет? http://mikrotik.site
MTadmin
Сообщения: 4
Зарегистрирован: 03 авг 2018, 16:18

20 авг 2018, 22:27

6.42.7 без изменений


Аватара пользователя
podarok66
Модератор
Сообщения: 3011
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

21 авг 2018, 19:12

Вопрос к ТС - в Вики указывается в премере на немного другой синтаксис для

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

:execute {:global e 555}
:execute {:log info "5. Variable ($e)"}
Шестой пример вообще без изменений сработал нормально, не понимаю, что не так у вас


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
MTadmin
Сообщения: 4
Зарегистрирован: 03 авг 2018, 16:18

21 авг 2018, 20:05

podarok66 писал(а):
21 авг 2018, 19:12
Шестой пример вообще без изменений сработал нормально, не понимаю, что не так у вас

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

:execute {:global e 555}
:execute {:log info "5. Variable ($e)"}
Да, огромное спасибо, в таком виде работает, вы очень помогли.
podarok66 писал(а):
21 авг 2018, 19:12
в Вики указывается в премере на немного другой синтаксис
А можно ссылку?


Аватара пользователя
podarok66
Модератор
Сообщения: 3011
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

21 авг 2018, 21:33

https://wiki.mikrotik.com/wiki/Manual:S ... g#Commands справа примеры, я там смотрел...


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Ответить