EULA接受Bash脚本

4
我有一个脚本正在尝试安装一个二进制文件。
除了.bin文件会在more中打开一个EULA之外,一切都正常。您必须手动按Ctrl+C退出此more实例,然后脚本才能重新开始并完成自己的安装。
由于这个more正在逃避shell,所以脚本不知道它打开后要运行什么。有没有办法让expect查找并防止这种情况发生?
没有自动接受EULA的自定义标志。
我已经到处寻找解决方案,但似乎没有任何东西能够解决问题。
命令本身很简单,但在heredoc之前被阻止。
/bin/bash gp.bin << AUTO
REST
OF
PARAMETERS
AUTO
2个回答

6

您应该可以使用“q”退出more,但这仅在交互式环境下起作用。

如果安装脚本编写得好,您应该可以使用除more之外的其他内容作为您的分页器。请尝试:

export PAGER=cat

观察行为是否有变化。

如果你仍然卡住了,你可能需要看一下类似于Expect而不是heredoc的东西。


好主意,重新分配传呼机。 :) 为什么expect不能使用q - user unknown
“q”应该可以与expect很好地配合使用。请记住,expect模拟交互。 :-) - Graham
1
很遗憾它没有起作用,但Expect却可以。唯一的问题是我现在必须在脚本中更早地自动安装expect。不过这不是问题。谢谢。 - Mr S

4
expect可以发送Ctrl-C(中断信号):http://expect.sourceforge.net/FAQ.html#q54 例如:
#!/usr/bin/env expect

spawn "/vendor/install/script.sh"
expect "EULA blah blah blah"
send \003
#rest of expect script...

但是尝试使用如上所建议的PAGER环境变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接