Страница 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
:du_ma_et:

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
Вы сейчас серьезно? Это синтаксис данной оси. Если вам неудобно, меняйте ось или смиритесь.