Страница 1 из 1

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

Добавлено: 20 авг 2018, 20:36
MTadmin

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

#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, на ней ещё не проверял.

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

Добавлено: 20 авг 2018, 20:42
vqd
Примеры завтра ибо с телефона и спать уже пора

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

Добавлено: 20 авг 2018, 22:27
MTadmin
6.42.7 без изменений

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

Добавлено: 21 авг 2018, 19:12
podarok66
Вопрос к ТС - в Вики указывается в премере на немного другой синтаксис для

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

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

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

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

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

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

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

Добавлено: 21 авг 2018, 21:33
podarok66
https://wiki.mikrotik.com/wiki/Manual:S ... g#Commands справа примеры, я там смотрел...