2013-06-27 2 views
2

나는문자열 변수를 쉘 스크립트 인수로 전달하는 방법은 무엇입니까?

String var1 = "I am" 
String var2 = "here" 
String cmd = ("sh /path/shell.sh \""+var1+"\" \""+var2); 
Runtime rt = Runtime.getRuntime(); 
rt.exec(cmd); 

같은 문자열 변수를하지만 내 쉘 스크립트에서 echo $1 $2을 실행할 때, 나는 I am과 출력을 얻을. 따옴표가 작동하지 않는 이유는 무엇입니까?

+1

"var2 . –

+2

*"from JAVA "* 1) 제목에 주요 태그를 포함 할 필요가 없습니다 .2) 'JAVA'가 아닌 'Java'로 표기됩니다.) [Runtime.exec()이 실행되지 않을 때] (http://www.javaworld.com/jw-12-2000/jw-1229-traps.html)의 권장 사항을 모두 읽고 (구현하는). 이 문제를 해결할 수 있을지 모르겠다면 실패한 이유에 대한 자세한 정보를 제공해야한다. 그런 다음'exec'를 참조하고'ProcessBuilder'를 사용하여'Process'를 빌드하라. ** 또한 'String arg' 그 자체가 공백을 포함하는 인수를 설명하기 위해'String [] args'에 추가 할 수 있습니다. ** –

답변

0

다음과 같이 명령을 호출 할 수 있습니다 :

Process process = new ProcessBuilder().command("sh", "/path/shell.sh", var1, var2); 
Scanner scan = new Scanner(process.getInputStream()); 
while(scan.hasNextLine()) { 
    //... 
} 
//... 
scan.close(); 
process.destroy(); 

당신은 아마 너무 try-catch 블록에 그것을 포장 할 수 있습니다.

관련 문제