2012-02-02 2 views
2

JAVA 프로그램에서 실행되는 쉘/bash 스크립트의 출력을 얻으려고합니다. 많은 행운이 없습니다. 코드는 다음과 같습니다.JAVA에서 bash 스크립트를 실행하고 결과를 리턴하십시오.

GetStats(winhostname); 

public static String winhostname "cmd /c hostname"; 

public static void GetStats(String operation) 
    { 
     try 
      { 
      Process p=Runtime.getRuntime().exec(operation); 
      p.waitFor(); 
      BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream())); 
      String line=reader.readLine(); 
      while(line!=null) 
      { 
      System.out.println(line); 
      if (operation.equals("winhostname")) 
      { 
       winhostnamevalue = line; 
      } 
      line=reader.readLine(); 
      } 

      } 
      catch(IOException e1) {} 
      catch(InterruptedException e2) {}  
    } 

이것은 Windows에서 정상적으로 작동하므로 winhostname 값을 "sh namecheck.sh"(호스트 이름을 간단하게 에코)로 변경하고 쉘 스크립트는 java/class 파일과 같은 디렉토리에 있습니다. 실행하면 빈 결과를 얻지 만 null이 아니라 공백이됩니다.

+0

Windows에서 bash 쉘을 실행하려고합니까? – hvgotcodes

+0

@hvgotcodes 나는 희망하지 않을 것이다 : P – Mike

+1

당신의 유닉스 프로세스에 대한 stderr를 유지하려고 시도한다 - 그것은 올바른 방향으로 당신을 가리킬 것이다 - Process # getErrorStream()을 보라. – DaveH

답변

1

시도 /bin/sh. 나는 당신이 쉘에서 작업 할 때 가지고있는 모든 환경을 가지고있는 자바로부터 프로그램을 실행할 때 그것이 확실하지 않다.

작동하지 않는 경우 일부 명령을 실행 해보십시오 (예 : pwd). 하지만 완전한 경로를 제공하십시오. 그런 다음 작동하면 명령을 다시 시도하고 스크립트를 찾을 수 있는지 확인하십시오. 처음에는 절대 경로를 사용하십시오. 그런 다음 상대 경로로 이동하십시오.

행운을 비네.

관련 문제