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

问题描述 投票:0回答:7

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

Do you want to continue [Y/n]?

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

linux bash scripting
7个回答
315
投票

“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
    

94
投票

echo y | command

应该可以工作。

此外,一些安装程序有一个“自动是”标志。它是 Ubuntu 上

-y

apt-get


19
投票
您可能无法在目标服务器上安装 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。


13
投票
您只需将

-y

 与安装命令一起使用即可。

例如:

yum install <package_to_install> -y


    


7
投票
虽然这可能比您想要的更复杂/更重,但一种非常灵活的方法是使用类似

Expect (或另一种编程语言中的派生语言之一)。

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


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

\n | ./shell_being_run
    

0
投票
就这样做:-

echo y | <your_command>


例如:-

echo y | apt-get update


    

© www.soinside.com 2019 - 2024. All rights reserved.