我这里说的是 ROS 格式 不是ROS软路由 意思就是 一个由 .ros为后缀名的文件 就像文本文件是以 .txt结尾 应用程序是以 .exe结尾一样 想知道要用什么软件打开这种文件 比如 aaa.ros
???????????????????????????????????这样吧ROS不是什么软件打开的告诉你这个吧ros脚本语言格式详解ROS2.96脚本详解四种变量global - 定义全局变量, 可以要所有的脚本中调用共享local - 定义本地变量,只能在其所要的脚本下调用,不能被其它脚本共享loop index variables - 定义在for或foreach里的索引号变量monitor variables - 监视变量ROS算术操作- 负号;相减。! 逻辑非。/ 相除。. 连接。两个符串的连接,添加元素到列表^ 异或(XOR)~ 取反* 相剩& 与(AND)&& 逻辑与+ 相加< 小于<< 向左位移<= 小于等于> 大于>= 大于等于>> 向右位移| 或|| 逻辑或ROS说明书里的例子:计算顺序[admin@MikroTik]> :put (10+1-6*2=11-12=2+(-3)=-1)false[admin@MikroTik]> :put (10+1-6*2=11-12=(2+(-3)=-1))true逻辑非[admin@MikroTik]> :put (!true)false[admin@MikroTik]> :put (!(2>3))true数位取反[admin@MikroTik]> :put (~255.255.0.0)0.0.255.255加法[admin@MikroTik]> :put (3ms + 5s)00:00:05.003[admin@MikroTik]> :put (10.0.0.15 + 0.0.10.0)cannot add ip address to ip address[admin@MikroTik]> :put (10.0.0.15 + 10)10.0.0.25减法[admin@MikroTik]> :put (15 - 10)5[admin@MikroTik]> :put (10.0.0.15 - 10.0.0.3)12[admin@MikroTik]> :put (10.0.0.15 - 12)10.0.0.3[admin@MikroTik]> :put (15h - 2s)14:59:58乘法[admin@MikroTik]> :put (12s * 4)00:00:48[admin@MikroTik]> :put (-5 * -2)10除法[admin@MikroTik]> :put (10s / 3)00:00:03.333[admin@MikroTik]> :put (5 / 2)2[admin@MikroTik]> :put (0:0.10 / 3)00:00:02比较[admin@MikroTik]> :put (10.0.2.3<=2.0.3.10)false[admin@MikroTik]> :put (100000s>27h)true[admin@MikroTik]> :put (60s,1d!=1m,3600s)true[admin@MikroTik]> :put (bridge=routing)false[admin@MikroTik]> :put (yes=false)false[admin@MikroTik]> :put (true=aye)false逻辑与 AND, 逻辑或 OR[admin@MikroTik]> :put ((yes && yes) || (yes && no))true[admin@MikroTik]> :put ((no || no) && (no || yes))false数位与AND, 或OR, 异或XOR[admin@MikroTik]> :put (10.16.0.134 & ~255.255.255.0)0.0.0.134位移操作[admin@MikroTik]> :put (~((0.0.0.1 << 7) - 1))255.255.255.128连接操作[admin@MikroTik]> :put (1 . 3)13[admin@MikroTik]> :put (1,2 . 3)1,2,3[admin@MikroTik]> :put (1 . 3,4)13,4[admin@MikroTik]> :put (1,2 . 3,4)1,2,3,4[admin@MikroTik]> :put ((1 . 3) + 1)14[admin@MikroTik]> :set a "It's "[admin@MikroTik]> :put ($a . OK)It's OKROS脚本保留字beep execute global list pick time toip typeofdelay find if local put toarray tonum whiledo for led log resolve tobool tostrenvironment foreach len nothing set toid totime:beep length=2s frequency=10000产生2秒10kHz的音频length缺省值为100msfrequency缺省值为1000Hz:set a "/int dis lan\n/int dis wan":execute $a执行多条命令,例子里执行了两条命令。\n是换行:global定义全局变量:list interface显示相关命令。显示当前目录及子目录下有关interface的命令:pick取字符串或数组的某一断。字符串(数组)的第一个为0。[admin@MikroTik]>:put [:pick "I love you" 2 6]love:time执行命令所需的时间[admin@MikroTik]> :put [:time [:resole [url]www.sina.com.cn>[/url]00:00:00.006执行解析[url]www.sina.com.cn[/url]这个域名所需的时间toip toarray tonum tobool tostr toid totime转换值类型:delay 3延时3秒,缺省为1秒:find查找字符串或数组中第一个出现查找内容的位置[admin@MikroTik]>:put [:find abcdcba cd]2[admin@MikroTik]>:put [:find "1,2,3,4,3,2,1" 2]1:put 输出到屏幕上,上面就很多例子了。:if条件选择[admin@MikroTik]>:if(1<2) do={:put true}true如果条件为真,执行do={}里面的命令[admin@MikroTik]>:if(1>2) do={:put true} else={:put flase}flase如果条件为真,执行do={}里面的命令,否则执行else={}里有命令:local定义本地变量:while条件为真时循环执行do={}里的脚本命令[admin@MikroTik]>:set i 0;:while($i<5) do={:put $i;:set i ($i+1)}012345:for循环执行do={}里的脚本命令:for i from=1 to=100 step=30 do={:put $i}1316191:foreach在集合(数组)里循环执行do={}里的脚本命令:foreach i in=[/interface find type=ether] do={:put [/interface get $i name]}ether1ether2ether3ether4在[/interface find type=ether]的集合(类型为ether的interface ID)循环输出interface的名称。我这时有四张网卡:log 日志类型 日志内容写文本到日志(script log)类型在/system logging里可以找到:log info "系统信息"到LOG里查查运行结果吧:resolve解析域名的IP地址[admin@MikroTik] > :put [:resolve [url]www.sina.com.cn[/url]]61.172.201.240:environment print显示所有变量及其值:len字符串或数组的长度[admin@MikroTik] > :put [:len hello]5[admin@MikroTik] > :put [:len "1,2,23,65,54,6"]6:nothing空值。nothing不等0,不等于空字符"":find abc a的结果是0:find abc d的结果是nothing:set赋值[admin@MikroTik] > :set a test将abc字符赋给变量a[admin@MikroTik] > :put $atest[admin@MikroTik] > :put aa引用变量的值要在变量前面加$