目录
继续讲ros脚本,本章讲ros循环语句和条件语句,它们使用的频率很高。
一、循环语句
ros循环语句有do...while、for、foreach,如下表所示:
命令 语法 说明 do..while
:do { <命令> } while=( <条件> );
:while ( <条件> ) do={ <命令> };
上面是2种写法
执行命令直到满足给定条件。 for :for <变量> from=<整数> to=<整数> step=<整数> do={ <命令> }
在给定的迭代次数上执行命令 foreach :foreach <变量> in=<数组> do={ <命令> };
对列表中的每个元素执行命令
用得比较多的还是for和while循环,比如批量操作,比如说我们在《实验实例pppoe配置》的基础上再创建10个账号pppoe,用户名:从t1到t10,密码为hua1到hua10,配置pppoe1,可以写成
# 下面中 ("t".$i) 的小括号不能少, t的双引号也不能少,字符串要括起来
:for i from=1 to=10 do={ ppp secret add name=("t".$i) password=("hua".$i) profile=pppoe1}
上面我没有写step,则默认为1。效果为:
其它的就不讲了,差不多的
二、if条件语句
条件语句一般都是if语句,主要是做判断,符合条件就执行。如下表所示:
Command | Syntax | Description |
---|---|---|
if | :if (<条件>) do={<命令>} else={<命令>} <语句> | 如果给定条件为真,则在do块中执行命令,否则如果指定则在else块中执行命令。 |
这处if条件写的时候要注意空格的问题,要不很容易出错。
我的ros6.47版本,小括号左右是要留空格的, “do=”不能有空格。比如我要判断p1用户是不是在线,如果在线的话,在线时长是多少,这个好计费啊,语句如下:
# 创建一个名为t1的脚本,添加如下内容
:local userid [/ppp active find name=p11]
if ($userid) do={\
:put [/ppp active get value-name=uptime number=$userid]
} else={ :put "not found" }
#执行脚本t1,打印出在线时间,发现为2小时06分50秒
[hua@MikroTik] > /system script run t1
02:06:50