我有一个if循环循环,我在路由器中配置命令
mode contains config or unconfig as values
if {[regexp -nocase {^config$} $mode]} {
set conf ""
} else {
set conf no
}
$router config "$conf primary command\n"
$router config "$conf secondary command\n"
当mode设置为config everthing is fine时,首先配置primary命令,然后配置secondary命令“ 但是在取消配置时我希望先执行辅助命令 然后只有它允许我删除主命令...所以当$ mode更改时我能够交换执行顺序吗?
答案 0 :(得分:1)
您可以尝试让代码保留要执行的操作列表,因为用户列出它们而不是立即执行它们,只是实际对某些信号执行操作。然后交换执行顺序只是在反向处理列表的问题,这非常简单(lreverse
可能有帮助)。
我个人并不倾向于这样做。通常的Tcl方式是立即按照指定的顺序执行操作;唯一值得注意的例外是Tk(推迟显示和布局“直到空闲”,即没有待处理的事件)和Expect在某些用途中(这是部分的;你可以同时expect
多件事,但是它们按照指定的顺序进行检查。
答案 1 :(得分:0)
那样的东西?
if {$conf == "no"} {
$router config "$conf primary command\n"
$router config "$conf secondary command\n"
} else {
$router config "$conf secondary command\n"
$router config "$conf primary command\n"
}
答案 2 :(得分:0)
proc myConf {cmd} {
global myConfs router
$router config "$cmd\n"
lappend myConfs $cmd
}
# configure
set myConfs {}
myConf "primary command"
myConf "secondary command"
# unconfigure
foreach cmd [lreverse $myConfs] {
$router config "no $cmd\n"
}