运行调试命令后,它的输出非常大。。所以在某个时刻,它一直在询问
Type <return> to continue,or q <return> to quit
现在,我想针对不同的错误自动执行这些命令。但是,在调试不同的错误时,我上面提到的这个特定语句不断变化。有时一个bug会出现两次,有时另一个bug则会出现五次。我该如何编写一个期望的脚本,以便为这些脚本提供继续选项?
如果我们不知道某些模式的出现顺序,甚至不知道次数,那么exp_continue
是正确的命令。
expect {
<pattern1> {send "cmd1"; exp_continue}
<pattern2> {send "cmd2"; exp_continue}
<pattern3> {send "cmd3"}
}
在上面的例子中,假设pattern1
和pattern2
可能不按相同的顺序到达,并且出现的次数也不同,则cmd1
和cmd2
将被发送,并且Expect
仍将再次运行。
命令exp_continue
允许Expect
本身继续执行,而不是像正常情况下那样返回。这对于避免显式循环或重复的期望语句非常有用。
默认情况下,exp_continue
会重置超时计时器。如果使用-continue_timer
标志调用exp_continue
,则计时器不会重新启动。
在你的情况下,我们可以写一些类似的东西
expect {
"Type <return> to continue,or q <return> to quit" {send "r";exp_continue}
"some-more-patterns" {#handler_here}
}