Dynamic variables

При скриптовании в RouterOS иногда таки хочется, чтобы имя переменной можно было задавать динамически. Например, ну очень нужно перебрать и вывести в консоль значения всех переменных prb1…prb1000 . Можно ручками 1000 раз, а хочется взять цикл и вжик… Невозможно? Возможно!

Хотя сам скриптовый язык RouterOS считается как-бы интерпретируемым, но в момент выполнения конкретного скрипта все имена переменных внутри этого скрипта должны быть известны. Значит таки нельзя? Можно – просто… вызываем скрипт из скрипта:

:global prb1 123
:global prb2 1234
:global prb3 12345

:global t

:for i from=1 to=3 do={
:execute script=”:global t \$prb$i”
:put $t
}

Пример для перечисления трех переменных по их номерам.

А вообще для последовательности значений лучше использовать специально созданные для этого типы – array.