繁体   English   中英

如何为安装程序编写“是”响应脚本?

[英]How do I script a "yes" response for installing programs?

我使用 Amazon Linux 实例,我有几个脚本来填充数据并安装我使用的所有程序,但有几个程序会询问:

Do you want to continue [Y/n]?

并暂停安装。 我想在所有情况下都自动回答“Y”,我现在才知道该怎么做。

“是”命令将无限期地回显“y”(或您要求的任何内容)。 将其用作:

yes | command-that-asks-for-input

或者,如果需要大写“Y”:

yes Y | command-that-asks-for-input

如果你想通过 'N' 你仍然可以使用yes

yes N | command-that-asks-for-input

echo y | command echo y | command应该可以工作。

此外,一些安装程序有一个“自动是”标志。 它是-y用于 Ubuntu 上的apt-get

您可能无法在目标服务器上安装 Expect。 例如,当一个人编写一份 Jenkins 工作时,通常就是这种情况。

如果是这样,我会考虑在 askubuntu.com 上对以下问题的回答:

https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line

printf 'y\nyes\nno\nmaybe\n' | ./script_that_needs_user_input

请注意,在极少数情况下,该命令不需要用户在字符后按 Enter。 在这种情况下,请忽略换行符:

printf 'yyy' | ./script_that_needs_user_input

为了完整起见,您还可以使用此处的文档:

./script_that_needs_user_input << EOF
y
y
y
EOF

或者,如果您的 shell 支持此处的字符串:

./script <<< "y
y
y
"

或者您可以创建一个每行一个输入的文件:

./script < inputfile

同样,此答案的所有功劳都归功于askubuntu.com的答案作者 lesmana。

您只需要在安装命令中加上-y

例如: yum install <package_to_install> -y

尽管这可能比您想要的更复杂/更重,但一种非常灵活的方法是使用诸如Expect (或另一种编程语言中的派生词之一)之类的方法。

Expect 是一种专为控制基于文本的应用程序而设计的语言,这正是您想要做的。 如果你最终需要做一些更复杂的事情(比如用逻辑来实际决定下一步做什么/回答什么),Expect 是你要走的路。

如果您只想接受默认值,您可以使用:

\n | ./shell_being_run

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM