我使用 Amazon Linux 实例,并且有几个脚本来填充数据并安装我使用的所有程序,但有几个程序询问:
Do you want to continue [Y/n]?
并暂停安装。我想在所有情况下自动回答“Y”,我现在才知道该怎么做。
“yes”命令将无限期地回显“y”(或任何您要求的内容)。将其用作:
yes | command-that-asks-for-input
或者,如果需要大写“Y”:
yes Y | command-that-asks-for-input
yes
:
yes N | command-that-asks-for-input
echo y | command
应该可以工作。此外,一些安装程序有一个“自动是”标志。它是 Ubuntu 上
-y
的
apt-get
。
如果是这样,我会考虑在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。
-y
与安装命令一起使用即可。例如:
yum install <package_to_install> -y
Expect (或另一种编程语言中的派生语言之一)。
Expect 是一种专门为控制基于文本的应用程序而设计的语言,这正是您想要做的。如果您最终需要做一些更复杂的事情(比如用逻辑来实际决定下一步要做什么/回答什么),Expect 就是正确的选择。
\n | ./shell_being_run
echo y | <your_command>
echo y | apt-get update