期望全局超时处理程序?

问题描述 投票:1回答:1

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

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

从本质上讲,它一直等到这些线出现。没有采取任何行动。

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

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

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

expect
1个回答
2
投票

您可以设置与任何以后的expect命令“并行”运行的expect_before行来测试超时。只需在你的spawn命令后添加

expect_before timeout { exit 1 }

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

expect_before {
    timeout { exit 1 }
    eof { exit 1 }
}
© www.soinside.com 2019 - 2024. All rights reserved.