За табличку спасибо. Я этот текст и исследование переменных знаю.
Дело не в этом, кажется.
Дело в том что если делаем из скрипта :execute ":global $Var" или :parse [:execute ":global $Var"] (как предложил когда то vqd) переменная с
именем равным значению переменной $Var в окружении действительно создается !, но скрипт, который это делает всё равно "ничего о ней не знает", т.к. она остается для него как бы не объявленной и оперировать ей нельзя !
А сделать прямо :global $Var из скрипта естественно нельзя - "синтаксическая ошибка", т.к. "$" автоматически означает "значение" переменной.
Вот и получается, что создать переменную с именем равным значению переменной из скрипта как бы можно (см. абзац 1), а пользоваться ей нельзя пока её не объявить снова через :global, но точно указав её имя. Можете попробовать сами. То есть :execute переменную создает как бы именно в "фоновом" режиме, в обход какой-то важной подпрограммы РОС, которая объявляет её !
Это ограничение, вероятно, скриптового языка РОС. Не знаю с какой целью это сделано, вероятно цель была ...
Если кто опровергнет и найдет способ создать переменную с именем равным значению другой переменной, но так, чтобы она стала доступна из скрипта - буду только рад ...
Интересно, что переменные созданные путем :execute ":global $Var скрипту не известны, а консоли - да, можно попробовать :log info $Var и :put $Var. В первом случае получим етественно ничего, а :put значение выводит, что логично - созданная в "фоновом" режиме переменная системе известна, а скрипту нет, т.к. в нем не объявлена.
Вот тут
viewtopic.php?f=14&t=9180 похожая тема уже обсуждалась, но рассматривались другие типы создания переменных ... (не с именем равным значению), тоже может быть полезно.
Написал с горя в support mikrotik, поглядим что ответят ... А вот и ответ прилетел:
Hello,
RouterOS scripting does not support declaring variables which names are taken from another variables value.
Regarding your question, variable is not declared in current scope, that is why you cannot get its value until ;global varname; is added to the script.
Best regards,
Maris B.
Что, собственно, и следовало ожидать. Так, что извращения вида :parse [:execute ":global $Var"] ,увы, бессмыссленны.
Вопрос исследован и закрыт.