So speichern Sie die Echoausgabe eines Shell-Skripts in Java [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Ausführen eines anderen Java-Programms aus unserem Java-Programm [duplizieren] 3 Antworten

Ich arbeite an einem Java-Programm, das innerhalb von JUnit-Tests mehrere Shell-Skripts aufruft (daher keine Ausgabe außer. Und E), die Dateien und SQL-Tabellen manipulieren und dann die Daten in diesen Tabellen mit ihren erwarteten Werten vergleichen. Theoretisch funktioniert alles, aber ich stoße auf einen merkwürdigen Fehler, bei dem ein Testtyp wie erwartet funktioniert, während der andere nach einer Auszeit von zehn Minuten fehlschlägt. Ich habe das Problem als eines der Shell-Skripte isoliert, habe dieses Skript jedoch nicht geschrieben und kann es in keiner Weise ändern. Die beste Möglichkeit zur Fehlerbehebung besteht darin, die Ausgabe des betreffenden Skripts zu speichern, die aus einer Reihe von Echoaufrufen stammt. Gibt es eine einfache / zuverlässige Möglichkeit, die Echoausgabe zu speichern? Ich habe ein bisschen gegoogelt, aber es ist nichts aufgetaucht. Ich habe noch nicht versucht, die Ausgabe zu speichern, daher habe ich keinen Versuch, sie anzuzeigen, aber der Code, den ich bereits geschrieben habe, ist möglicherweise relevant:

<code>//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();
</code>

In einer anderen Frage, die ich gestellt habe, hat jemand empfohlen, Runtime.exec () aus mehreren Gründen nicht zu verwenden. Obwohl ich die Vorteile der Nichtverwendung von exec () erkenne, muss ich dies für diese Version des Programms tun.

Die Frage: Kann mein Java-Programm problemlos Shell-Skripte ausführen und deren Echo-Ausgabe speichern? Wenn nicht, gibt es ein Tail -f-Äquivalent zum Lesen der Ausgabe?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage