Handling input confirmations in Linux shell scripting
我正在编写一个Linuxshell脚本来自动化我在Ubuntu11.04上所做的一些事情。
基本上,我正在编写一个shell脚本来安装nginx、mysql和php,然后配置所有内容。我知道如何通过命令行完成所有事情。
但是,我不知道如何处理流程要求用户输入的部分。例如,我用apt-get安装的某些东西要求您确认,即(y)es或(n)o。
我将如何在shell脚本中处理自动确认,即在被询问时自动确认是或否?
- 复制品?stackoverflow.com/questions/226703/…(希望有帮助!)
- @HeltonBiker:我不是想从shell脚本的用户那里获得输入,而是在我的脚本通常会提示我提供"是"或"否"响应的任何地方强制/进行输入。
- 你说得对,我读错了,对不起。
yes | ./script将回答y的所有问题。
否则,编写一个脚本来打印您想要的答案,例如:
- 谢谢你的选择。不过,我不确定如何准确地构造脚本来完成这项工作,您有代码示例吗?
- 如果你不想总是回答"是",我不太明白你的问题,因为这完全取决于具体情况。如果你想对一个脚本回答"是-是-否",只需:printf"y
y
n
" | ./your_script或用单独的行编写一个简单的脚本来打印每个答案,然后:./answer_script | ./the_script。
- 谢谢。我想我现在有多种选择,以防我想以不同的方式回答不同的提示。这似乎是做我想做的事情的最优雅的方式,因为我只需要在脚本中调用它一次。
通常,您可以调用此类交互式程序,并选择自动回答所有问题的"是"。例如,您可以使用-y调用apt-get。从手册页:
-y, --yes, --assume-yes
Automatic yes to prompts; assume"yes" as answer to all prompts and run
non-interactively.
对于APT,正确的答案是"预设"具有正确参数的debconf数据库。如果Debconf从数据库中找到答案,它不会问。另请参见http://www.debian-administration.org/articles/394
试着期待它可能是你想要的。
- 非常感谢,看起来很有趣。我是否需要确切地知道提示将是什么,即,如果我在shell脚本中运行的命令将执行类似"输入您的出生日期:"的操作,我是否需要编写预期的"输入您的出生日期:"正如提示要求的那样?!
- 据我所知-是的