尝试重定向以及对 linux shell 脚本的第二个响应

尝试重定向以及对 linux shell 脚本的第二个响应

我正在尝试自动化一个过程,该过程使用 sh 脚本包装的 java 程序创建二进制响应文件(这有很多问题,但不是我的代码)。我想要的结果需要在运行 sh 脚本时在第一个提示中按 [enter],在第二个提示中按“Y”[enter]。

我使用以下代码让它在一台 Linux 机器上工作:

echo Y > ans; ./script < ans `echo -e \\\r`

在另一个 Linux 机器上,它不起作用(脚本再次进入无限循环,不是我的代码)。两个机器都运行相同的内核和版本。

我确信有更优雅、更直接的方法可以做到这一点。但是,我需要它始终如一地工作。我不相信这不是其中一个盒子的设置方式。

答案1

尝试一个简单的expect脚本:

#!/usr/bin/expect

设置超时20
生成 /path/to/your/java/shell/script/thing.sh

期待“FirstPrompt:”{发送“\r”}
期待“SecondPrompt:”{发送“Y”}
相互影响

...FirstPrompt第一个提示的文本在哪里(因此,如果您的 shell 脚本提示“请按 ENTER”,那么您需要逐字提示,我在示例脚本中写了“FirstPrompt:” expect),而 SecondPrompt 是第二个提示,逐字逐句。

...我还假设expect已安装,并且位于/usr/bin/expect您的系统上。如果不是这种情况,请安装它,并使用正确的路径。

相关内容