当前位置:文档之家› ROS2.96脚本详解

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)

逻辑与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 OK

ROS脚本保留字

beep execute global list pick time toip typeof

delay find if local put toarray tonum while

do for led log resolve tobool tostr

environment foreach len nothing set toid totime

:beep length=2s frequency=10000

产生2秒10kHz的音频

length缺省值为100ms

frequency缺省值为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 https://www.doczj.com/doc/91416594.html,]]

00:00:00.006

执行解析https://www.doczj.com/doc/91416594.html,这个域名所需的时间

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)}

1

2

3

4

5

:for

循环执行do={}里的脚本命令

:for i from=1 to=100 step=30 do={:put $i}

1

31

61

91

:foreach

在集合(数组)里循环执行do={}里的脚本命令

:foreach i in=[/interface find type=ether] do={:put [/interface get $i name]} ether1

ether2

ether3

ether4

在[/interface find type=ether]的集合(类型为ether的interface ID)循环输出interface的名称。我这时有四张网卡

:log 日志类型日志内容

写文本到日志(script log)

类型在/system logging里可以找到

:log info "系统信息"

到LOG里查查运行结果吧

:resolve

解析域名的IP地址

[admin@MikroTik] > :put [:resolve https://www.doczj.com/doc/91416594.html,]

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 $a

test

[admin@MikroTik] > :put a

a

引用变量的值要在变量前面加$

相关主题
文本预览
相关文档 最新文档