Как сохранить эхо-вывод сценария оболочки в Java [duplicate]
This question already has an answer here:
Executing another java program from our java program [duplicate] 3 answersЯ работаю над Java-программой, которая вызывает несколько сценариев Shell в тестах JUnit (следовательно, не выводит ничего, кроме. И E), которые манипулируют файлами и таблицами SQL, а затем сравнивают данные в указанных таблицах с их ожидаемыми значениями. Все работает теоретически, однако я сталкиваюсь с серьезной ошибкой, когда один тип теста работает, как ожидалось, в то время как другой тип дает сбой после десятиминутного перерыва. Я выделил проблему как один из сценариев оболочки, однако я не написал этот сценарий и не могу его никоим образом изменить. Лучший способ решить эту проблему - сохранить выходные данные соответствующего сценария, которые поступают из серии эхо-вызовов. Есть ли какой-то простой / надежный способ сохранить эхосигнал? Я немного погуглил, но ничего не вышло. Я еще не пытался сохранить выходные данные, поэтому у меня нет попытки показать вам, но код, который я уже написал, который может иметь отношение к следующему:
<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>
В другом вопросе, который я задал, кто-то рекомендовал не использовать Runtime.exec () по нескольким причинам. Хотя я понимаю преимущества отсутствия exec (), мне нужно для этой версии программы.
Вопрос tl; dr: может ли моя Java-программа легко запускать сценарии оболочки, а также сохранять их вывод echo? Если нет, есть ли эквивалент tail -f для чтения вывода?