OpenWrt 脚本配置

来源:互联网 发布:美团外卖大数据 编辑:程序博客网 时间:2024/06/12 23:47
脚本配置

加载
为了加载UCI配置文件,你需要包含常见函数:
#!/bin/sh /etc/rc.common

然后你可以使用config_load name来加载配置文件。
此函数首先会把name当做是绝对文件名并后退到/etc/config/进行加载。
如果你想对节段或选项使用特殊回调的话,你需要重新定义以下描述的shell函数,并且是在运行config_load之前,/etc/rc.common之后。

Callbacks
在句法分析过程中,每次遇到UCI节段标题时都会调用config_cb过程。
当被调用时,此过程就会接收到两个参数:
1.       TYPE,节段类型
2.       NAME,节段名称

config_cb() {
local type="$1"
local name="$2"
# commands to be run for every section
}

与config_cb相似,每次遇到UCI选项时都会调用option_cb过程。
当被调用时,此进程会接收两个参数:
1.       NAME,选项名称
2.       VALUE,选项值

option_cb() {
local name="$1"
local value="$2"
# commands to be run for every option
}

你可以基于节段类型将config_cb更改为option_cb。它可以使你能够依据它们的类型逐一处理单独的config节段。

Iterating
基于语句分析的callback的变换方法是用config_foreach过程迭代配置节段。
Config_foreach过程至少需要一个参数:
1.       Function,为每个遇到的节段而调用的预先定义的程序名称
2.       Type,只迭代已给类型的节段,跳过其它的。
3.       Additional arguments,所有以下参数都按原样传递给回调程序
在以下示例中,每个config interface节段都会在/etc/config/network调用handle_interface过程。Test字符串会被做为第二个参数在每个调用中进行传送。

handle_interface() {
local config="$1"
local custom="$2"
# run commands for every interface section
}
config_load network
config_foreach handle_interface interface test

也可以通过return一个非零值在callback内部取消迭代。
在每个节段回调内,config_get或config_set过程也许是用来读取或设置属于当前进程段的值。
0 0
原创粉丝点击