2017-12-09 1 views
0

Windows 10 환경의 Java에서 Ubuntu의 Bash로 작성된 셸 스크립트를 어떻게 실행할 수 있습니까?
이 코드를 사용하려고하는데 스크립트를 실행하거나 실행하지 않습니다.Windows 10 환경의 Java에서 Ubuntu의 Bash로 작성된 쉘 스크립트를 어떻게 실행할 수 있습니까?

public static void main(String[] args) throws IOException { 
     Runtime rt = Runtime.getRuntime(); 
     ProcessBuilder builder = new ProcessBuilder(
      "bash.exe", "/mnt/d/Kaldi-Java/kaldi-trunk/tester.sh"); 

     Process p = builder.start(); 
     BufferedReader r = new BufferedReader(new 
     InputStreamReader(p.getInputStream())); 
     String line; 
     while (true) { 
      line = r.readLine(); 
      if (line != null) { System.out.print(line);} 
      else{break;} 
     } 
    } 
+0

bash.exe가 정규화되어 있고 중복 런타임을 정의했을 수 있습니다 ... – Ivonet

답변

0

우선 : 명령 줄에서이 명령을 실행하려고 시도 했습니까? 만약 당신이 그렇게했다면 문제는 윈도우에서 bash가 아니라 자바 프로그램과 함께한다는 것을 의미합니다.

당신이 명령 줄에서 실행할 수없는 경우 먼저이 문제를 해결

내가 우분투를 사용하지만이 같은 떨어지게을 시도 할 조언을 할 수 있기 때문에 나는 내 프로그램을 테스트 할 수 없습니다

:

(프로그램이 끝날 때까지 기다립니다)
public class Main { 

    public static void main(String[] args) throws IOException, InterruptedException { 
     ProcessBuilder builder = new ProcessBuilder(
       "bash.exe", "/mnt/d/Kaldi-Java/kaldi-trunk/tester.sh"); 

     Process p = builder.start(); 

     /* waitFor() method stops current thread until this process is over */ 
     p.waitFor(); 
     // I think that scanner is a nicer way of parsing output 
     Scanner scanner = new Scanner(p.getInputStream()); 
     while (scanner.hasNextLine()) { 
      // you do not have to create `line` outside the loop 
      // it does not change performance of a program 
      String line = scanner.nextLine(); 
      System.out.println(line); 
     } 
    } 
} 
0

Windows 환경에서 Java를 사용하여 스크립트를 실행하려는 경우이를 다르게 실행하는 것이 좋습니다. 나는 이것이 무엇을 믿고 Unable to read InputStream from Java Process (Runtime.getRuntime().exec() or ProcessBuilder)

public static void main(String[] args) throws IOException { 

    Process proc = Runtime.getRuntime().exec(
      "/mnt/d/Kaldi-Java/kaldi-trunk/tester.sh"); 
    BufferedReader read = new BufferedReader(
      new InputStreamReader(proc.getInputStream())); 

    while (read.ready()) 
    { 
     System.out.println(read.readLine()); 
    } 

} 

:

How to run Unix shell script from Java code?

는 또한,이 질문은 질문에 당신을 도울 것입니다 :

나는 여기에 질문 귀중한 질문에서 당신의 코드를 적응 당신이 찾고있는. 나는 당신의 Java 코드가 약간 벗어난 것으로 생각하고 이러한 편집이 도움이 될 것입니다. java 실행 파일을 빌드 한 후에는 Window의 명령 프롬프트를 통해 실행할 수 있습니다.

관련 문제