我/usr/bin/expect
第一次学习使用 来自动化从源代码安装 fink 的噩梦,因为该脚本有几十个提示,所有这些提示都可以用 Enter 键回答。问题是,脚本的一部分需要大约 30 分钟,而最后一部分需要大约 10 分钟。我不确定是否要set timeout 1800
或set 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
只会为该函数的本地范围设置它,而不会影响全局超时值。