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

Вытащить переменную из :do

Добавлено: 01 ноя 2022, 10:38
cliff
Добрый день, подскажите, как вытащить переменную, чтоб в дальнейшем ее использовать.
Есть конструкция такого вида внутри скрипта

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

:do {
:local ispip [/ip address get [find interface=$ispinter] address];
} on-error={
:local ispip "0.0.0.0/0";
}
Но за пределы этого :do переменная $ispip не попадает, и в скрипте, в дальнейшем, ее использовать не получится.

Мне необходимо записать IP адрес в переменную $ispip, если же по любой причине адрес получить не удалось (интерфейс упал, dhcp не выдал итд), переменная должна принять вид "0.0.0.0/0", а скрипт продолжиться выполняться.
Есть очевидные варианты в виде использования :global, либо записи в файл нужных данных, но хочется не выходить за пределы скрипта, потому что на одном устройстве подобных скриптов будет висеть несколько, и сочинять новые переменные под каждый скрипт не хочется.
Если так не получится, может быть кому-нибудь придет в голову, как иначе решить задачу? А то уже взгляд замылился.

Re: Вытащить переменную из :do

Добавлено: 01 ноя 2022, 12:58
Sertik
:local ispip

:do {
:set ispip [/ip address get [find interface=$ispinter] address];
} on-error={
:set ispip "0.0.0.0/0";
}

Re: Вытащить переменную из :do

Добавлено: 01 ноя 2022, 13:23
-13-
можно и не объявлять а сразу сделать :-):

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

:do {
:set $ispip [/ip address get [find interface=$ispinter] address];
} on-error={
:set $ispip "0.0.0.0/0";
}

Re: Вытащить переменную из :do

Добавлено: 01 ноя 2022, 13:31
Sertik
Но лучше всё же переменные объявлять, а то войдет в нехорошую привычку, а потом можно наступить на грабли :-)

Re: Вытащить переменную из :do

Добавлено: 01 ноя 2022, 14:40
-13-
Sertik писал(а): 01 ноя 2022, 13:31 Но лучше всё же переменные объявлять, а то войдет в нехорошую привычку, а потом можно наступить на грабли :-)
А что за грабли, в чем выражается? Давно уже так делаю, пока проблем не было

Re: Вытащить переменную из :do

Добавлено: 01 ноя 2022, 14:46
Sertik
с глобальными тоже так поступаете ?
а с массивами ?

Re: Вытащить переменную из :do

Добавлено: 01 ноя 2022, 15:22
-13-
Sertik писал(а): 01 ноя 2022, 14:46 с глобальными тоже так поступаете ?
а с массивами ?
глобальные объявляю через :global Name "tulula", но я их не люблю и стараюсь не использовать, на сегодня обхожусь двумя-тремя
массивы также через :set $array1

Re: Вытащить переменную из :do

Добавлено: 02 ноя 2022, 02:46
cliff
Большое спасибо. Не ожидал, что важно, где переменная объявлена.