0

我有一个 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"

当模式设置为 config everthing 时,首先配置主命令,然后配置辅助命令”但是在取消配置时,我希望先执行辅助命令,然后只有它允许我删除主命令...所以当 $mode 更改时我会可以交换执行顺序吗?

4

3 回答 3

1

您可以尝试让您的代码在用户列出它们时保留要执行的操作列表,而不是立即执行它们,仅实际对某个信号执行操作。然后交换执行顺序只是反向处理列表的问题,这非常简单(并且lreverse可能会有所帮助)。

不过,我个人并不倾向于这样做。通常的 Tcl 方式是立即按照指定的顺序做事;唯一值得注意的例外是 Tk(它推迟显示和布局“直到空闲”,即当没有待处理的事件时)和 Expect 在某些用途中(这是部分的;你可以expect一次做很多事情,但它们会被检查按照指定的顺序)。

于 2013-01-29T15:23:34.603 回答
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"
}
于 2013-01-29T14:30:02.743 回答
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"
}
于 2013-01-29T16:52:12.407 回答