设置超时是否会改变每个期望语句,还是仅改变最后的期望 eof?

设置超时是否会改变每个期望语句,还是仅改变最后的期望 eof?

/usr/bin/expect第一次学习使用 来自动化从源代码安装 fink 的噩梦,因为该脚本有几十个提示,所有这些提示都可以用 Enter 键回答。问题是,脚本的一部分需要大约 30 分钟,而最后一部分需要大约 10 分钟。我不确定是否要set timeout 1800set timeout 600。基本上,我想知道是否set timeout影响每个语句的超时expect "...",或者它是否只影响最后的expect eof

我可以保守地配置它并继续使用set timeout 1800,但我认为如果期望的语义是关于这里的最终 eof,那么最好在那里选择一个更具体的等待时间。

我知道我也可以使用set timeout -1,但是这个预期脚本将由 CI 服务器运行,我不希望它们无限期地停滞。

答案1

set timeout会影响每个语句的超时expect。但是,您可以对其中任何一个赋予明确的覆盖值:

expect -timeout 100 ...

还要注意,函数set timeout内部proc只会为该函数的本地范围设置它,而不会影响全局超时值。

相关内容