准备命令问题的答案

准备命令问题的答案

假设我想编写一个只执行一个命令的 shell 脚本。但这个命令设计得很糟糕。它不提供任何命令行选项;相反,它会询问一些问题并等待用户输入。

有没有办法在脚本中准备这些输入,以便自动回答问题?

答案1

如果命令不是很挑剔,它应该使用如下所示的命令:

command > /dev/null << EOF
<answer 1>
<answer 2>
<answer 3>
EOF

这需要您事先知道确切的答案。

答案2

希望可以做到这一点。来自期待网站:

Expect 是一个用于自动化交互式应用程序(如 telnet、ftp、passwd、fsck、rlogin、tip 等)的工具。Expect 确实使这些东西变得微不足道。 Expect 对于测试这些相同的应用程序也很有用 [...]”

它带来了很多帮助,比如自动预期

再次来自 Expect 网站,

autoexpect 监视您与另一个程序的交互,并创建一个 Expect 脚本来重现您的交互。对于直线脚本,autoexpect 比手动编写脚本节省大量时间。

答案3

如果您的脚本需要回答一个提示,或者您可以在多个提示中给出相同的答案,则yes

NAME
       yes - output a string repeatedly until killed

SYNOPSIS
       yes [STRING]...
       yes OPTION

DESCRIPTION
       Repeatedly output a line with all specified STRING(s), or `y'.

像这样使用它:

yes Me | give_a_hug.sh

相关内容