我使用 Amazon Linux 实例,我有几个脚本来填充数据并安装我使用的所有程序,但是有几个程序会问:
Do you want to continue [Y/n]?
暂停安装。我想自动回答“ Y”在所有的情况下,我只是现在知道如何做到这一点。
虽然这可能比您想要的更复杂/更重,但是一种非常灵活的方法是使用类似 期待(或其他编程语言中的一种派生物)的东西。
Expect 是一种专门设计用于控制基于文本的应用程序的语言,这正是您想要做的。如果您最终需要做一些更复杂的事情(比如使用逻辑来实际决定下一步要做什么/回答什么) ,Expect 是可行的方法。
echo y | command应该能用。
echo y | command
另外,一些安装程序有一个“ auto-yes”标志,它是 Ubuntu 上 apt-get的 -y。
apt-get
-y
“是”的命令将无限期地重复“ y”(或者你让它做的任何事情)。使用它:
yes | command-that-asks-for-input
或者,如果需要大写的“ Y”:
yes Y | command-that-asks-for-input
如果你想传 N,你仍然可以使用 yes:
yes
yes N | command-that-asks-for-input
您可能无法在目标服务器上安装 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
为了完整起见,您还可以使用 here 文档:
./script_that_needs_user_input << EOF y y y EOF
或者如果您的 shell 支持它一个 here 字符串:
./script <<< "y y y "
或者您可以创建一个每行只有一个输入的文件:
./script < inputfile
同样,这个问题的答案归功于 在 askubuntu.com 上找到答案的作者 Lesmana。
如果你只想接受默认值,你可以使用:
\n | ./shell_being_run
您只需将 -y与 install 命令放在一起。
例如: yum install <package_to_install> -y
yum install <package_to_install> -y