条件未满足时的例外操作

时间:2015-04-19 00:36:37

标签: exception tcl expect

我试图创建一个except脚本,只有在命令执行中不存在字符串时才会执行操作:示例:

send -- "sys set -nd\r"
expect "showdebugcommands" {} "\n$PROMPT" {send -- "sys set showdebugcommands 1\r"}

我想要做的是:如果" showdebugcommands" cmd输出中存在但是如果它不存在,则执行命令" sys set showdebugcommands 1"。

我如何使用expect实现这一目标?

2 个答案:

答案 0 :(得分:2)

试试这个

set seen false
expect {
    "showdebugcommands" {set seen true; exp_continue}
    "\n$PROMPT" 
}
if { ! $seen} {
     send -- "sys set showdebugcommands 1\r"
}

答案 1 :(得分:0)

执行此操作的一种方法是在expect内嵌套expect。这是完全合法的。

send -- "sys set -nd\r"
expect {
    "showdebugcommands" {
        expect "\n$PROMPT"
    }
    "\n$PROMPT" {
        send -- "sys set showdebugcommands 1\r"
        expect "\n$PROMPT"
    }
}

目的是在看到你想要的东西之后将活动耗尽回到已知状态(提示显示)。从代码单元的角度思考将事物带回已知状态总是一个好主意。 (正因为如此,我还在内部expect之后添加了另一个send提示符;让我们将它全部恢复到外部结尾的“我刚刚看到提示符”的状态expect因为这是最不可思议的选择。)