Cómo guardar la salida de eco de un script de shell en Java [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Ejecutando otro programa java desde nuestro programa java [duplicar] 3 respuestas

Estoy trabajando en un programa Java que llama a varios scripts de Shell dentro de las pruebas de JUnit (por lo tanto, no hay resultados excepto los de. Y E) que manipulan los archivos y las tablas SQL y luego compara los datos de dichas tablas con sus valores esperados. Todo funciona en teoría, sin embargo, me encuentro con un error en el que un tipo de prueba funciona como se espera y el otro falla después de un tiempo de espera de diez minutos. He aislado el problema para ser uno de los scripts de Shell, sin embargo, no escribí este script y no puedo cambiarlo de ninguna manera. La mejor manera de solucionar este problema es guardar la salida del script en cuestión, que proviene de una serie de llamadas de eco. ¿Existe alguna forma sencilla y confiable de guardar la salida de eco? He buscado un poco en Google pero no ha surgido nada. No he intentado almacenar la salida todavía, así que no tengo un intento de mostrarte, pero el código que ya he escrito que puede ser relevante es:

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

En otra pregunta que hice, alguien recomendó no usar Runtime.exec () por varias razones. Aunque me doy cuenta de las ventajas de no usar exec (), necesito hacerlo para esta versión del programa.

La pregunta tl; dr: ¿Puede mi programa Java ejecutar scripts de shell y guardar su salida de eco? Si no, ¿hay una cola equivalente para leer la salida?