hualinux ros 1.16:RouterOS脚本(六):变量

目录

一、前言

二、全局变量

2.1 全局变量定义

2.2 用法

2.3 例子

二、局部变量

2.1 用法

2.2 例子


继续讲ros脚本基础,此章讲ros变量。在ros中变量只有2种,全局变量和本地变量(一般开发中喜欢称局部变量)。

一、前言

在《RouterOS脚本(三):命令行结构》中的“命令行语法”中提到前缀有2种,斜杠"/"或冒号":"。

斜杠现在大家都可以知道怎么使用了吧,表示命令路径的,而“:”一般表示非命令路径的,比如变量、条件、循环语句等,脚本用得比较多。

和其它语言一样,一般都有全局变量和局部变量,在ros中没有静态变量。毕竟 ros的脚本并不像其它专业脚本语言,如javaScript、python等那样强大。

因变量放在内存中,重启后所有定义的变量会消失。

二、全局变量

2.1 全局变量定义

定义一个全局变量很简单,如下所示:

:global <变量名> <值>

获取变量的值为:“$变量名” ,如果是有特殊符号的变量要用双引号引起来。如$"user-traffic",不能写成少了双引号的  $user-traffic 

一般变量名可以数字、大小写字母、下划线等,ros没有规定不能以数字开头,但推荐不要用数字和下划线开头,养成良好的编程习惯。

写变量名的时候值得注意的是:如果有特殊字符的变量名,需要用双引号括起来大比如定义变量user-traffic,要写成  :global "user-traffic" xxx ,要用双引号把它引起来

因变量放在内存中,重启后所有定义的变量会消失。所以全局变量重启ros后也会消失

2.2 用法

全局变量在什么时候才使用呢,一般是在需要跨脚本使用变量的时候。这样只需要在定义一个全局变量,其它脚本也可以使用此变量,比较方便。

但是使用全局变量的时候需要谨慎,如果没有没有规划好,很容易出问题,一般建议在一个脚本只定义一个全局变量,其它脚本只读的方式,尽量不做修改。使用全局变量最好限定在一个小业务功能脚本内,不要让它越界,按照约定起好名字,如:"模块名-作用-名字",也可以使用驼峰法,即第2个单词起,首字母大写。

2.3 例子

我创建一个名为var1的脚本并定义了一个全局变量名,主要是查看在线用户数,内容如下:

# 创建名为va1的脚本,内容如下:
# 获取在线用户数
:global userOnLineNum [/ppp active print count-only]

再创建一个名为var2的脚本,输出上面的全局变量,值得注意的是如果要使用另一个脚本定义的全局变量,还需要再定义一次才,var2脚本内容如下

# ros脚本不同于其它脚本,需要再次定义才可以调用
:global userOnLineNum
:put $userOnLineNum

运行va1再运行var2,效果如下:

[hua@MikroTik] > system script run var1
1
[hua@MikroTik] > system script run var2
1

二、局部变量

ros的local变量称本地变量,一般开发的喜欢称为局部变量。局部变量好理解,只能作到局部,使用关键词“:local ”定义。格式为:

:local <变量名> <值>

获取变量的值为:“$变量名” 

2.1 用法

局部变量一般只是在某个脚本内生效,如果有大中小括号,那么它的作用范围将变成括号内,出了这个括号就失效了。

局部变量定义一般出现下面几个位置:

  • 在脚本:只能脚本内生效,出了这个脚本就失效。
  • 中括号内:只在[]内有效,出了[]将失效
  • 花括号内:只在{}内有效,出现{}失效

注:在命令行中,只能使用全局变量

2.2 例子

例子:建立一个脚本为t1,输入下面内容

# 脚本内的变量,只在本脚本内生效
:local hello "ros"
# 2个字符串之间使用点号.连接
:put ($hello.",welcome")
 
 
# 局部变量在中括号[]内,超出中括号失效
[:local hello1 "() var";put $hello1]
# 失效,打印为空
:put $hello1
 
{:local hello2 "{} var";put $hello2}
# 失效,打印为空
:put $hello2 

执行效果如下:

[hua@MikroTik] > system script run t1 
ros,welcome
() var
() var
{} var

PS:上面的例子中,可以在大范围定义,小范围使用变量是没问题的,反过来则不行。比如上面的定义脚本变量

# 脚本内的变量,只在本脚本内生效
:local hello "ros"
# 2个字符串之间使用点号.连接
:put ($hello.",welcome")

上面的 :put ($hello.",welcome") 可以放在在大中括号内使用。

# 变量在中括号中使用
[:put ($hello.",welcome")]
# 变量在花括号中使用
{:put ($hello.",welcome")}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值