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

时间:2011-10-04 02:21:01

标签: linux bash scripting

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

Do you want to continue [Y/n]?

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

6 个答案:

答案 0 :(得分:162)

'yes' command将无限期地回应'y'(或你提出的任何问题)。用它作为:

yes | command-that-asks-for-input

或者,如果需要资本'Y':

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

答案 1 :(得分:53)

echo y | command应该有用。

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

答案 2 :(得分:14)

您可能无法在目标服务器上安装Expect。 当一个人写一个詹金斯的工作时,通常就是这种情况。

如果是这样,我会在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

同样,这个答案的所有功劳归于the answer on askubuntu.com,lesmana的作者。

答案 3 :(得分:5)

虽然这可能比你想要的更复杂/更重,但是一种非常灵活的方法是使用Expect(或其他编程语言中的一种衍生物)。

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

答案 4 :(得分:4)

您只需要在安装命令中放置Link

例如:-y

答案 5 :(得分:3)

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

\n | ./shell_being_run