Jak zapisać wynik echa skryptu powłoki w Javie [duplikat]

To pytanie ma już tutaj odpowiedź:

Wykonywanie innego programu Java z naszego programu Java [duplikat] 3 odpowiedzi

Pracuję nad programem Java, który wywołuje kilka skryptów powłoki w testach JUnit (stąd brak wyjścia oprócz .'s i E), które manipulują plikami i tabelami SQL, a następnie porównują dane we wspomnianych tabelach z ich oczekiwanymi wartościami. Wszystko działa w teorii, jednak spotykam się z błędem strage, w którym jeden typ testu działa zgodnie z oczekiwaniami, a drugi typ po 10 minutach przerwy. Wyizolowałem problem, aby był jednym ze skryptów Shell, jednak nie napisałem tego skryptu i nie mogę go zmienić w żaden sposób. Najlepszym sposobem rozwiązania tego problemu jest zapisanie danych wyjściowych danego skryptu, który pochodzi z serii wywołań echa. Czy istnieje jakiś prosty / niezawodny sposób na zapisanie wyników echa? Poszukałem trochę, ale nic nie wyszło. Nie próbowałem jeszcze przechowywać danych wyjściowych, więc nie próbuję ci pokazać, ale kod, który już napisałem, może być istotny:

<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>

W innym pytaniu, które zadałem, ktoś polecił nie używać Runtime.exec () z kilku powodów. Chociaż zdaję sobie sprawę z zalet nieużywania exec (), potrzebuję tej wersji programu.

Pytanie tl; dr: Czy mój program Java może łatwo uruchamiać skrypty powłoki, a także zapisywać ich wynik echa? Jeśli nie, czy istnieje odpowiednik tail -f do odczytu danych wyjściowych?

questionAnswers(2)

yourAnswerToTheQuestion