不满足条件时的异常动作

Exception action when condition isn't met

我正在尝试制作一个 except 脚本,该脚本仅在命令执行中不存在字符串时才会采取行动:示例:

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

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

我如何使用 expect 完成此操作?

试试这个

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

一种方法是将 expect 嵌套在 expect 中。这是完全合法的。

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

目的是在看到你想要的东西后,将 activity 恢复到已知状态(提示显示)。根据将事物恢复到已知状态的代码单元来思考总是一个好主意。 (因此,我在内层send之后又加了一个提示expect;让我们把它全部恢复到外层末尾“我刚看到一个提示”的状态expect 因为这是最不疯狂的选择。)