Присвоение значения переменной в скрипте

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Ответить
mvp
Сообщения: 10
Зарегистрирован: 15 фев 2013, 06:05

Добрый день.

Что-то запутался с переменным, есть кусок скрипта:

:global currentIP

if $MainIfInetOk do={
:global currentIP $RsrvIfAddress
}

Сейчас он работает, но до этого переменная была local, в результате присваивание внутри условия было, а как только выходили за границы условия, то переменная currentIP как бы очищалась. Просто для меня local было что это в рамках одного модуля (скрипта), а получается что нет...


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

Не понял
local временная переменная которая создается на время выполнения скрипта и в конкретной сессии

global глобальная переменная значение в которой хранится до первой перезагрузки и доступна она из любого скрипта


Есть интересная задача и бюджет? http://mikrotik.site
mvp
Сообщения: 10
Зарегистрирован: 15 фев 2013, 06:05

Вот в том то и дело, что я тоже так думал.

Если делаю:
:local currentIP

if $MainIfInetOk do={
:local currentIP $RsrvIfAddress
/log info "*** $currentIP" #здесь показывает
}
/log info "*** $currentIP" #а здесь пусто

Или я не правильно присваиваю или лыжи не едут...


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

Ну все правильно

Давайте смотреть
:local currentIP - Вот вы инициализировали вашу переменную в рамках сессии

if $MainIfInetOk do={
:local currentIP $RsrvIfAddress - а вот тут вы ее же инициализируете но в рамках do={} Естественно после выполнения условия она перестает существовать
/log info "*** $currentIP" #здесь показывает
}
/log info "*** $currentIP" #а здесь пусто - а тут ее уже не существует по сути

Если вам в условии надо поместить в переменную значение то
:set currentIP $RsrvIfAddress


Есть интересная задача и бюджет? http://mikrotik.site
mvp
Сообщения: 10
Зарегистрирован: 15 фев 2013, 06:05

ясно, спасибо, так всё работает.

думаю же что что-то не то делаю...


Ответить