Linux Shell脚本-当Shell脚本多次提示时,输入重定向

Linux Shell脚本-当Shell脚本多次提示时,输入重定向,linux,shell,unix,Linux,Shell,Unix,我们有一个shell脚本,它期望在提示时输入多个用户输入。例如 首先,它可能要求执行操作。当给出答案时,它可能会要求输入用户名、密码等。我们希望通过使用文件重定向(即。 脚本

我们有一个shell脚本,它期望在提示时输入多个用户输入。例如 首先,它可能要求执行操作。当给出答案时,它可能会要求输入用户名、密码等。我们希望通过使用文件重定向(即。 脚本<输入。
输入文件将包含脚本可能询问的不同问题的所有答案。但是,它不起作用,shell脚本只读取输入文件的第一行。我需要更改或使用什么才能使此工作正常?

您可以使用的是程序
expect
。您为它创建了一个脚本,告诉它何时为它执行的某个命令提供什么输入。通过这种方式,您可以完全自动化您正在努力解决的问题

有关谷歌的更多信息,请点击此处:

  • 手册页:

    • 您说“它只读取输入的第一行。”

      所以你必须杀了剧本

      有输出吗?(特别是错误消息)

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

      这是最有可能的助手。。。修改顶层脚本并在第2行添加
      set-vx
      。然后,您将能够看到处理了什么,它在哪里停止了,并且可能会形成关于它为什么不处理数据的理论

      是否有可能输入文件是在Windows环境中创建的,并且cr\lf对会弄乱预期的输入


      我希望这能有所帮助。

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

      您能发布脚本的相关部分和输入文件的第一行吗?有问题的脚本调用内部脚本,要求用户输入。我看不到那些内部脚本。但会出现类似“输入要执行的操作”的提示。当用户进入此操作时,会再次提示用户“输入用户名”。我已经尝试过标准的文件重定向,但它不起作用。我们不知道如何更改我们看不到的内容。显示脚本。内部脚本可能在读取之前发出了一个fflush(stdin),这将导致所看到的问题。expect是一个很好的建议。