파일과 SQL 테이블을 조작하고 데이터를 비교하는 JUnit 테스트에서 여러 쉘 스크립트를 호출하는 자바 프로그램에서 작업하고 있습니다. 상기 테이블들에서 그들의 예상 된 값들로. 이론적으로는 모든 것이 작동하지만 한 유형의 테스트가 예상대로 작동하는 반면 다른 유형은 10 분의 타임 아웃 후에 실패하는 문제가 발생합니다. 문제를 쉘 스크립트 중 하나로 분리했지만이 스크립트를 작성하지 않았으므로 어떤 방식 으로든 변경할 수는 없습니다. 이 문제를 해결할 수있는 가장 좋은 방법은 일련의 에코 호출에서 발생하는 문제의 스크립트 출력을 저장하는 것입니다. 에코 출력을 저장하는 데 다소 직접적이고 신뢰할 수있는 방법이 있습니까? 나는 조금 봤지만 아무 것도 나오지 않았다. 나는 당신을 보여하려는 시도를하지 않아도 아직 출력을 저장하기 위해 시도하지 않은,하지만 관련이있을 수 이미 작성한 코드는 다음과 같습니다 누군가 내가 물어 또 다른 질문에서쉘 스크립트의 에코 출력을 Java 내에서 저장하는 방법
//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()를 사용하지 않는 것에 대한 이점을 알고 있지만,이 버전의 프로그램에 필요합니다.
질문 : 내 Java 프로그램에서 쉽게 쉘 스크립트를 실행하고 에코 결과를 저장할 수 있습니까? 그렇지 않다면 출력을 읽는 데 tail -f equivalent가 있습니까? 사용에 대해 새 스크립트 파일을 작성하는 방법
나는 이것과 비슷한 질문이라고 생각한다. http://stackoverflow.com/questions/5711084/java-runtime-getruntime-getting-output-from-executing-a-commandline-program – DRCB
Commons Exec을 사용할 수있다. . 예제는 http://stackoverflow.com/questions/6295866/how-can-i-capture-the-output-of-a-command-as-a-string-with-commons-exec를 참조하십시오. – Kkkev