如何编写安装程序的"yes"响应脚本?



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

Do you want to continue [Y/n]?

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

"yes"命令将无限期地回显"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应该可以工作。

此外,一些安装程序有一个"auto-yes"标志。它是Ubuntu上apt-get-y

您可能无法在目标服务器上安装Expect。例如,当一个人写一份詹金斯的工作时,经常会出现这种情况。

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

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

printf 'ynyesnnonmayben' | ./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。

您只需要使用install命令放置-y

例如:yum install <package_to_install> -y

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

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

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

n | ./shell_being_run

最新更新