我正在开发一个 Java 程序,它在 JUnit 测试中调用多个 Shell 脚本(因此除了 .'s 和 E's 之外没有输出),它操作文件和 SQL 表,然后将所述表中的数据与其预期值进行比较。理论上一切正常,但是我遇到了一个意外错误,其中一种类型的测试按预期工作,而另一种类型的测试在十分钟超时后失败。我已将问题隔离为 Shell 脚本之一,但是我没有编写此脚本,也无法以任何方式更改它。解决此问题的最佳方法是保存相关脚本的输出,该输出来自一系列回显调用。是否有一种简单/可靠的方法来保存回声输出?我用谷歌搜索了一下,但什么也没出现。我还没有尝试存储输出,所以我没有
//Currently using BufferedWriter, File, FileWriter, IOException, and Writer
import java.io.*;
//Method to write to a log file
public void record(String input) throws IOException {
writer = new BufferedWriter(new FileWriter(file,true));
writer.write(input + "\n");
writer.close();
}
Runtime rt = Runtime.getRuntime();
//Several of these since a lot of file manipulation/script running occurs
process = rt.exec("./shell.sh");
process.waitFor();
在我问的另一个问题中,有人建议不要使用 Runtime.exec() 有几个原因。虽然我意识到不使用 exec() 的好处,但对于这个版本的程序,我需要这样做。
tl;dr 问题:我的 Java 程序能否轻松运行 shell 脚本并保存它们的 echo 输出?如果没有,是否有用于读取输出的 tail -f 等效项?