RouterOS的数组使用和其他语言大同小异,简单介绍下数组的使用 一个数组的定义如下,使用全局变量定义数组array,包括元素1,2,3,4 :global array {1;2;3;4} 输出数组的值 :put $array 输出第2个元素值,记住数组序列是从0开始计数 :put [:pick $array 1] 我们也可以将一个元素赋值给一个变量 :global tmp [:pick $array 2] 我们可以通过len得到数组的长度,并输出 :put [:len $array] 通过:len得到该数组有多少个元素,这样有利于我们后面一些代码的处理,比如for :for i from=0 to=[:len $array] 我们也可以使用foreach循环取值 :foreach i in=[/ip arp find] do={ :set arraymac ($arraymac ,[/ip arp get $i mac-address ]) :set arraynum ($arraynum , $i) } 下面是一个通过比较在arp列表里是否存在相同mac地址并删除的实例(脚本写的很丑,请谅解),注意定义数组变量时最好不要用全局变量,因为脚本执行完后,全局变量是不会被清空的,下次执行时会重复追加元素,一般使用局部变量local定义: # 定义mac数组 :local arraymac # 定义标号数组 :local arraynum # 相同mac的标号数组 :local arrays # 第一个相同mac标号变量 :local macfirst :local n :local n1 # 取arp下的mac地址和他们在arp列表中的标号 :foreach i in=[/ip arp find] do={ :set arraymac ($arraymac ,[/ip arp get $i mac-address ]) :set arraynum ($arraynum , $i) } #取得数组长度 :set n [:len $arraymac] #双循环比较 :for m from=0 to=($n-1) do={     :for k from=1 to=$n do={         :if ([:pick $arraymac $m] = [:pick $arraymac $k]) do={           :set macfirst [:pick $arraynum $m]           :set arraySN ($arraynum , [:pick $arraynum $k])         }    } } #取得数组长度 :set n1 [:len $arraySN] #删除arp列表中相同的mac地址 :for j from=0 to=$n1 do={ /ip arp remove [:pick $arraySN $j] } /ip arp remove $macfirst 希望以上介绍,对你操作RouterOS脚本有帮助