期待和 - 更多 -

时间:2012-02-28 15:04:43

标签: linux expect

我试图使用expect来自动接受在--more - 。

中提示的EULA
#!/usr/bin/expect
spawn "./greenplum-perfmon-web-4.1.2.0-build-2-RHEL5-x86_64.bin"
expect "--More--"
send "q"
expect "*****"
send "yes"
expect "*****"
send ""
expect "*****"
send "yes"

这不起作用,我不知道为什么。脚本总是在--More--提示符处停止,第二个我单击ANYTHING它会立即处理脚本的其余部分。

我试过

expect -exact "--More--"

expect "the Customer"
(what is written above the --More--)

2 个答案:

答案 0 :(得分:2)

尝试将$MORE设置为类似-99999999的内容,以便more提示永远不会显示。

答案 1 :(得分:0)

完全避免期待的解决方案:

您可以通过将PAGER环境变量设置为其他程序并使用yes程序来完全避免此问题。以下关闭是,并将尽可能多的yes\n字符串发送到安装程序中:

PAGER=cat  yes yes | ./greenplum-perfmon-web-4.1.2.0-build-2-RHEL5-x86_64.bin

如果这看起来很奇怪,它几乎等同于以下内容:

export PAGER=cat
yes yes | ./greenplum-perfmon-web-4.1.2.0-build-2-RHEL5-x86_64.bin

不同之处在于,对于单行,PAGER仅针对该一个命令设置,而不是针对之后发生的任何事情。