全局超时处理程序是否在期望中?

时间:2018-09-04 13:14:17

标签: expect

我有一个期望脚本,看起来像这样:

set timeout 15
spawn someprocess
expect "a line"
expect "another line"
expect "some other line"

本质上,它在等待直到这些行出现。没有要采取的行动。

我不想为我要查找的每一行写以下内容:

expect {
    "a line" {}
    timeout { exit 1 }
}

我希望expect返回非零状态代码(即$?中的某个值),只要该代码在任何时候都超时。我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以设置一个expect_before行,该行与任何以后的期望命令“并行”运行以测试超时。只需在您的spawn命令之后添加

expect_before timeout { exit 1 }

如果您希望在生成的进程退出时进行错误提示,则可以将它们组合如下:

expect_before {
    timeout { exit 1 }
    eof { exit 1 }
}