关于linux:Shell脚本 – 在shell脚本多次提示时输入重定向

Shell script - input redirection when prompted by the shell script multiple times

我们有一个shell脚本,它希望在提示时输入多个用户输入。例如一开始它可能要求执行操作。当给出这个答案时,它可能会要求输入用户名,然后输入密码等。我们希望通过使用文件重定向提供输入来自动执行此任务,即。脚本<输入。输入文件将包含脚本可能会问的不同问题的所有答案。但是它不工作,shell脚本只读取输入文件的第一行。我需要改变什么或使用什么来实现这一目标?


您可以使用的是程序expect。为它创建一个脚本,告诉它什么时候给它执行的某个命令输入什么。通过这种方式,你可以完全自动化你正在挣扎的事情。

更多关于谷歌和这里的信息:

  • http://www.linuxjournal.com/article/3065
  • 手册页:http://linux.die.net/man/1/expect

感谢大家的评论和回答。我试过了,但是没用。所以我要提到什么对我们有用。这是我们的工作流程-1。在Linux提示下,键入命令,在我们的例子中是connect()。2。一旦给出了该命令,脚本就会请求该命令的参数,如端口号、服务器等。我们必须手动提供该参数3。然后我们再次看到一个shell提示和另一个输入。在我们的例子中,我们可以使用文件重定向在提示符处提供第一个命令connect(),但是参数传递是一个问题。我们找到的解决方案是只在connect的括号内提供参数,即重定向的输入文件将包含-connect()。这对我们有用。


你说"它只读取输入的第一行"。

所以你必须杀了剧本?

是否有输出?(特别是错误信息)?

是否将stderr重定向到/dev/null或其他位置?如果是这样的话,就去掉它。

这是高概率助手…修改顶级脚本,在第2行添加set -vx。然后,您将能够看到处理的内容、停止的位置,并可能制定有关为什么不处理数据的理论。

有没有可能输入文件是在Windows环境中创建的,而CR-LF对会弄乱预期的输入?

我希望这有帮助。