我使用Amazon Linux实例,我有几个脚本来填充数据并安装我使用的所有程序,但有几个程序要求:
Do you want to continue [Y/n]?
并暂停安装。我想在所有情况下自动回答“Y”,我现在确定该怎么做。
答案 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