[英]expect: How to cancel `expect_before` and `expect_after`?
似乎使用expect_before
或expect_after
一次,它们被应用于任何expect
跟随,导致意外超时。
所以我想知道:如何取消前面的expect_before
或expect_after
?
到目前为止我没有成功的尝试(它似乎仍然匹配" "
)是:
expect_after
expect_after { }
还是我完全误解了这个概念?
试图控制一个类似 shell 的程序,这就是我所做的(大致):
$cmd
)时,请使用expect_before $cmd
$prompt
),使用expect_after $prompt
expect
匹配实际命令output但是有两个例外:
$prompt
; 因此我想取消expect_after
。 由于密码没有回显,我也想在发送密码时取消expect_before
。quit
命令后不会有提示,所以想取消expect_after
。 我认为您误解了 Tcl 大括号。 它们不是特殊的语法,它们只是一种引用机制——它们就像 shell 单引号:内部没有插值。 所以expect_before { }
意味着你期待一个空格,并且没有指定任何动作。
我认为,要取消之前的期望,您可以使用不带expect_before
的 expect_before。
使用expect_before -info
查看当前状态。
要忽略发送的 $cmd,我想你想要
expect_before -ex $cmd {exp_continue}
每次cmd
变量更改时,您都需要重新执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.