Страница 1 из 1
Переменной не присваивается значение
Добавлено: 18 апр 2025, 12:00
ReAlex
Так работает.
Код: Выделить всё
:put [/ip firewall filter get [find comment="kick-ass"] packets]
112650
А так не работает.
Код: Выделить всё
:local pa0 [/ip firewall filter get [find comment="kick-ass"] packets]
:put ($pa0-1)
-1

Re: Переменной не присваивается значение
Добавлено: 18 апр 2025, 16:11
karton
Поймал точно такое же поведение когда выполнял :put ($pa0-1) в терминале, если сделать скрипт в System --> Scripts и потом в терминале запускать его через "/system/script/ run script2" то всё нормально
Re: Переменной не присваивается значение
Добавлено: 18 апр 2025, 16:27
ReAlex
Получается, что переменная :local видна в пределах строки. Нажал энтер - все. В Повершеле не так.
Пришлось писать скрипт одной строкой разделяя команды семиколом. Как-то не по-человечески. Мягко говоря.
Re: Переменной не присваивается значение
Добавлено: 18 апр 2025, 16:37
karton
Если скрипт создавать в System Scripts то там можно ставить Enter
Re: Переменной не присваивается значение
Добавлено: 20 апр 2025, 19:31
podarok66
Если проверять в Terminal, то чтобы две команды отработали цепочкой, их надо в одну локальную область определить (фигурные скобки). Вот прямо на рабочей машинке:
Код: Выделить всё
[podarok66@RB750Gr3] > {:local a [/ip firewall filter get [find comment="Winbox on WAN"] packets]; :put $a}
1018
[podarok66@RB750Gr3] > {:local a [/ip firewall filter get [find comment="Winbox on WAN"] packets]; :put ($a + 20)}
1038
Re: Переменной не присваивается значение
Добавлено: 21 апр 2025, 12:00
ReAlex
podarok66 писал(а): ↑20 апр 2025, 19:31
их надо в одну локальную область определить (фигурные скобки)
Так вычитывать скрипт неудобно. А есть способ пользоваться переносом строки, но отправлять на выполнение сразу несколько строк?
Re: Переменной не присваивается значение
Добавлено: 26 апр 2025, 10:02
podarok66
Вы сейчас серьезно? Это синтаксис данной оси. Если вам неудобно, меняйте ось или смиритесь.