2011-04-07 88 views
2

我们有一个shell脚本,需要提示时输入多个用户输入。例如 首先它可能会要求执行操作。当给出答案时,它可能会要求输入用户名和密码等。我们希望通过使用文件重定向提供输入来自动执行此任务,即 脚本<输入。 输入文件将具有脚本可能要求的不同问题的所有答案。然而,它不工作,shell脚本只读取输入文件的第一行。我需要改变或使用什么来完成这项工作?Shell脚本 - 当shell脚本多次提示时输入重定向

+0

你可以发布脚本的相关部分和输入文件的第一行吗? – bmk 2011-04-07 14:10:13

+0

有问题的脚本会调用它们要求用户输入的内部脚本。我不知道这些内部脚本。但会提示 - “输入要执行的操作”。当用户输入这个操作时,它会再次提示用户 - “输入用户名”。我已经尝试了标准文件重定向,但它不起作用。 – Sumod 2011-04-07 14:16:44

+0

我们无法弄清楚如何改变我们看不到的东西。显示脚本。 – drysdam 2011-04-07 14:25:27

回答

0

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

0

你说

所以你必须杀死脚本?

有没有输出? (尤其是错误信息)?

您是否将STDERR重定向到/ dev/null或其他位置?如果是这样,请删除。

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

输入文件是否在Windows环境中创建并且cr \ lf对会混淆预期的输入?

我希望这会有所帮助。