Страница 1 из 1
Список локальных переменных
Добавлено: 09 сен 2020, 20:48
oleg.peredernin
Столкнулся с проблемой при отладке скрипта под RouterOS.
Не могу понять, определены или нет некоторые из локальных переменных.
Подскажите скрипт, как можно сбросить в файл список локальных переменных и их значения ?
Re: Список локальных переменных
Добавлено: 09 сен 2020, 21:35
podarok66
Локальная переменная живёт только в своей области. То есть скрипт закончил работу (даже с ошибкой) - переменные удалились. Что вы смотреть хотите?
Re: Список локальных переменных
Добавлено: 10 сен 2020, 06:15
oleg.peredernin
Да, я понимаю, что значит локальные и пределы их видимости.
Но некоторые локальные переменные передает в скрипт ROS , а некоторые я определяю в скрипте сам. И хочу убедиться в проблемном месте все ли переменные таковы, как я предполагаю. Поэтому я и хочу вывести список определенных в данный момент переменных в файл или несколько файлов.
Re: Список локальных переменных
Добавлено: 10 сен 2020, 19:19
podarok66
Ну хорошо, давайте так. Вы вставляете в нужном месте код типа этого:
Код: Выделить всё
/file print file=0.txt;
:delay 1;
/file set "0.txt" content="";
:foreach u in=[system script environment find name!=""] do={
:local t [([system script environment get $u name]." - ".[system script environment get $u value])];
:local n [/file get "0.txt" contents];
/file set "0.txt" contents="$n\n$t";
}
В файле с именем 0.txt будет построчный список переменных и их значений на момент срабатывания кода. Но тягу к данному способу диагностики я не разделяю. Есть же лог, есть наконец команда прямого вывода в терминал :put Неужели какой-то код нельзя продебажить ими? Создание файла и запись туда на Микроте - то ещё развлечение.
Re: Список локальных переменных
Добавлено: 11 сен 2020, 12:19
oleg.peredernin
Сделал скрипт по Вашему образцу:
:local VarStr "123";
/file print file=0.txt;
:delay 1;
/file set "0.txt" content="";
:foreach u in=[system script environment find name!=""] do={
:local t [([system script environment get $u name]." - ".[system script environment get $u value])];
:local n [/file get "0.txt" contents];
/file set "0.txt" contents="$n\n$t";
}
Файл создался, но он содержал только мои глобальные переменный. Переменной VarStr в нём не было.
# sep/11/2020 13:59:50 by RouterOS 6.47.3
# software id = 618H-PCLU
#
# NAME VALUE
0 RandomOrg ????????
1 TelegramSend ????????
Re: Список локальных переменных
Добавлено: 11 сен 2020, 20:03
podarok66
Мдя, в Environment укладываются только глобальные переменные. Что-то я этот момент не знал. Я предполагал, что эта область хранит все переменные. В Вики на эту тему всё расплывчато :
Environment
....
Contains all user defined variables and their assigned values.
Тогда только логами или, если отлаживать в терминале, то put
Re: Список локальных переменных
Добавлено: 11 сен 2020, 21:08
oleg.peredernin
Есть ли возможность задать этот вопрос разработчикам ROS или они немногословные небожители ?
Re: Список локальных переменных
Добавлено: 12 сен 2020, 12:27
podarok66
Да можно, почему же нет. На официальном форуме пожалуйста. Только вот зачем вам именно это, вы так и не пояснили. Ну можно же использовать конструкции типа
Или такие , если в Терминале
Если вам нужно записать в файл значение локальной переменной, ну пишите напрямую
Код: Выделить всё
:local VarStr "123";
/file print file=0.txt;
:delay 1;
/file set "0.txt" content="$VarStr";
Если дописывать в существующий с новой строки, то так
Код: Выделить всё
:local VarStr "123";
:local n [/file get "0.txt" contents];
/file set "0.txt" contents="$n\n$t";
Зачем именно то извращение, которое вы заказали в стартовом посте?
Re: Список локальных переменных
Добавлено: 12 сен 2020, 18:01
oleg.peredernin
У меня возник косяк в скрипте, когда я полагал, что локальная переменная определена, а на самом деле её не было, ошибка в имени.
Во вторых я полагал, что ROS передает мне в скрипт переменную, а оказалось, что её уже не было.
Поэтому мне было бы полезным иметь возможность посмотреть переменные в конкретном месте.
А в файле или в лог не принципиально.
Лог я каждый день отправляю в почту и очищаю.
Ситуация которую пытаюсь отловить возникает не каждый день, поэтому файл удобнее.
Попробую задать вопрос разработчикам.
Re: Список локальных переменных
Добавлено: 12 сен 2020, 19:10
podarok66
oleg.peredernin писал(а): ↑12 сен 2020, 18:01
Лог я каждый день отправляю в почту и очищаю.
Ситуация которую пытаюсь отловить возникает не каждый день, поэтому файл удобнее.
А вот теперь не понял. Хрен с ним, с Микротом. Ну на почте-то логи остаются. И в чём тогда дело? Проблема выеденного яйца не стоит и абсолютно надумана. Простите, тему я вынужден закрыть, как исчерпавшую себя более чем полностью.
Говорильня ради говорильни не интересна.