我们有一个shell脚本,需要在提示时输入多个用户输入。例如 首先,它可能要求执行操作。当给出答案时,它可能会要求输入用户名,然后输入密码等。我们希望通过使用文件重定向提供输入来自动执行此任务,即 脚本<输入。 输入文件将包含脚本可能询问的不同问题的所有答案。但它不起作用,shell脚本只读取输入文件的第一行。我需要更改或使用什么来完成这项工作?
答案 0 :(得分:2)
您可以使用的是程序expect
。您为它创建一个脚本,告诉它何时给它执行的某个命令输入什么。通过这种方式,您可以完全自动化您正在努力解决的问题。
Google和此处的更多信息:
答案 1 :(得分:0)
你说'它只读取第一行输入。'
所以你必须杀死脚本?
有没有输出? (特别是错误信息)?
您是否将STDERR重定向到/ dev / null或其他位置?如果是这样,删除它。
以下是最高概率帮助程序...修改顶级脚本并在第2行添加set -vx
。然后,您将能够看到已处理的内容,已停止的位置,并可能制定有关其未处理数据的原因的理论。
是否有可能在Windows环境中创建输入文件并且cr \ lf对正在弄乱预期的输入?
我希望这会有所帮助。
答案 2 :(得分:0)
感谢大家的评论和回答。我尝试过,但没有用。所以我要提一下对我们有用的东西。这是我们的工作流程 - 1.在linux提示符下,输入命令,在我们的例子中是connect()。 2.一旦给出该命令,脚本将询问命令的参数,如端口号,服务器等,我们必须手动提供3.然后我们再次向shell提示另一个输入。在我们的例子中,我们能够使用文件重定向在提示符下提供第一个命令connect(),但参数传递是个问题。我们找到的解决方案是仅在连接的括号内提供参数,即我们用于重定向的输入文件将包含 - connect()。这对我们有用。