воскресенье, 6 ноября 2022 г.

Mikrotik script удалить все глобальные переменные

 Примитивная задача, почему нельзя было придумать что-нибудь типа:

/system script environment clear

или

/system script environment remove *

или

:environment clear

???

приходится описывать так

:foreach var in=[/system script environment print as-value] do={
	/system script environment remove ($var->".id")
}

Mikrotik remove all global variables and function

усложнили задачу, есть некоторая вероятность удаления переменных других скриптов, поэтому задаем себе правило - во всем глабльном иметь префикс, удалять будем именно по нему

# в самом начале объявляем локальную, просто чтобы видеть ее
:local pref "chksm"

# далее наша какая то программа начинается
:global chksmMyVar false
:local MyLocalVar 0
....
:global chksmTest do={
	:put "TEST"
}
....
:local chksmTestLocal do={
	:put "TEST LOCAL"
}
....
# далее наша какая то программа заканчивается

# удаляем глобальные переменные
:foreach var in=[/system script environment print as-value] do={
	:local prefVar [:pick ($var->"name") 0 [:len $pref]]; 
	:if ($prefVar=$pref) do={
		/system script environment remove ($var->".id")
	}
}


Комментариев нет:

Отправить комментарий