使用expect自动化调试脚本

时间:2016-05-18 12:51:16

标签: expect

运行调试命令后,它的输出非常大......所以在某些时候它一直在询问

Type <return> to continue,or q <return> to quit

现在我想针对不同的bug自动执行这些命令。但是我上面提到的这个特定语句在调试不同的bug时不断变化。有时它会出现两次一个bug,有时会出现另外五次bug。我怎么写期望脚本给这些ie的继续选项?

1 个答案:

答案 0 :(得分:1)

如果我们不知道某些模式的出现顺序甚至是次数,那么exp_continue是正确的命令。

expect {
    <pattern1> {send "cmd1"; exp_continue}
    <pattern2> {send "cmd2"; exp_continue}
    <pattern3> {send "cmd3"}
}

在上面的示例中,假设pattern1pattern2可能不会以相同的顺序到达,并且出现的次数也会有所不同,那么cmd1cmd2将是已发送,Expect仍会再次运行。

命令exp_continue允许Expect本身继续执行而不是像往常一样返回。这对于避免显式循环或重复的期望语句很有用。

默认情况下,exp_continue会重置超时计时器。如果使用exp_continue标志调用-continue_timer,则不会重新启动计时器。

在你的情况下,我们可以写一些像

这样的东西
expect {
    "Type <return> to continue,or q <return> to quit" {send "\r";exp_continue}
    "some-more-patterns" {#handler_here}
}