期望中的全局超时处理程序?

Rog*_*mbe 3 expect

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

set timeout 15
spawn someprocess
expect "a line"
expect "another line"
expect "some other line"
Run Code Online (Sandbox Code Playgroud)

本质上,它会等待这些行出现。无需采取任何行动。

我不想为我正在寻找的每一行编写以下内容:

expect {
    "a line" {}
    timeout { exit 1 }
}
Run Code Online (Sandbox Code Playgroud)

如果在任何时候超时,我想expect返回一个非零状态代码(即 in )。$?我该怎么做呢?

meu*_*euh 5

您可以设置一条expect_before与任何后续的期望命令“并行”运行的线路来测试超时。spawn只需在命令后添加即可

expect_before timeout { exit 1 }
Run Code Online (Sandbox Code Playgroud)

如果您想在生成的进程退出时出错,可以按如下方式组合它们:

expect_before {
    timeout { exit 1 }
    eof { exit 1 }
}
Run Code Online (Sandbox Code Playgroud)