2011-07-02 6 views
3

나는 이클립스와 함께 우분투 10.04를 사용한다. , 내가 자바이 exam.sh를 호출 할 ./exam.sh // ok command showing me Hello WorldJava 프로그램에서 쉘 스크립트를 호출하려면 어떻게해야합니까?

실행할 수있는 명령 줄에서 chmod를 755 exam.sh

#!/bin/bash 
echo "Hello World" 

: 나는 쉘 스크립트, exam.sh를 생성 코드, 이건 내 자바 코드입니다 :

public static void main(String[] args) {  
Runtime r = Runtime.getRuntime(); 
Process p = null; 
String cmd[] = {"/bin/bash","cd","/home/erdi/Desktop", ".","/","exam.sh"}; 

try { 
    p = r.exec(cmd); 
    System.out.println("testing...");//ok 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
} 

이 코드는 작동하지 않습니다. 어디에서 실수를 했습니까? 예 저는 Google에서 검색 할 수 있지만 내 문제에 대한 답변을 찾지 못했습니다. 이 기능에 대한 howTos 및 자습서를 제공하지만 답변을 찾지 못했습니다.

+0

원본 게시물에는'#!/bin/bash'와'echo "Hello World"'사이에 개행 문자가 없습니다. Erci는 스크립트가 명령 행에서 작동한다고 말했기 때문에 단지 형식화 문제라고 가정하고 개행 문자를 추가했습니다. –

답변

5

대신보십시오 : 당신은 그냥 직접 쉘 스크립트에서 떠들썩한 파티를 호출 할 수 있습니다

cmd[] = {"/bin/bash", "/home/ercan/Desktop/exam.sh"}; 

. 명령 문자열 (예 : cd)을 실행하려면 -c 스위치를 사용해야합니다.

바탕 화면으로 스크립트의 작업 디렉토리를해야하는 경우 Runtime.exec의 또 다른 과부하 사용할 수 있습니다

Process proc = runtime.exec(cmd, new String[0], new File("/home/ercan/Desktop")); 

또는, ProcessBuilder 클래스는 조금 더 좋은 프로세스를 실행하게합니다.

+0

프로세스 proc = runtime.exec (cmd, 새 문자열 [0], 새 파일 ("/ home/ercan/Desktop")); –

+0

@erci : 예? 그 라인이 작동하지 않는 것이 있습니까? –

+0

프로세스 proc ....이있는 행은 "No suggation avaible"오류를 표시합니다. 새로운 Java 코드가 필요하다고 생각합니다. –

관련 문제