2012-06-18 111 views
0

我正在開發一個web應用程序,其中我使用JSP作爲我的前端和shell腳本作爲我的後端。因此,我將通過Java程序(業務層)將輸入JSP中的參數傳遞給shell腳本。我想知道如何能夠將參數從Java傳遞到shell腳本並執行相同的操作。謝謝。將參數從Java程序傳遞到shell腳本

+0

與此類似? http://stackoverflow.com/questions/5711084/java-runtime-getruntime-getting-output-from-executing-a-command-line-program – tjg184

+0

使用ProcessBuilder與[命令](http://docs.oracle。 com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html#command(java.util.List))方法來傳遞參數。 –

回答

1

您可以使用ProcessBuilder將參數傳遞給shell腳本。

ProcessBuilder pb = new ProcessBuilder("shellscript", "myArg1", "myArg2"); 
Map<String, String> env = pb.environment(); 
env.put("VAR1", "myValue"); 
env.remove("OTHERVAR"); 
env.put("VAR2", env.get("VAR1") + "suffix"); 
pb.directory("myDir"); 
Process p = pb.start(); 
+0

感謝您的回覆。我有一個問題,「myArg1」和「myArg2」是傳遞給shell腳本的參數。如果是這樣的話,我不會使用VAR1和VAR2。另外,如果我需要在「myArg1」和「myArg2」的幫助下在shell腳本中進行一些處理並獲得一些結果,我將如何將該結果傳回給我的Java程序。我曾在很多論壇上分析過這個問題,但我無法找到答案。你可以幫我嗎。 – User

+0

我已經想出了答案,我認爲這可能對人有幫助 – User

1

我已經想出了答案,我認爲這可能對人有幫助。 請參閱代碼

public static BufferedReader process() throws IOException 
{ 
    ProcessBuilder pb = new ProcessBuilder("/home/XXXX/Desktop/request.sh","Apple"); 
    String line; 
    Process process=pb.start(); 
    java.io.InputStream is = process.getInputStream(); 
    InputStreamReader isr = new InputStreamReader(is); 
    BufferedReader br = new BufferedReader(isr); 

    while ((line = br.readLine()) != null) 
    { 
     System.out.println(line); 
    } 
    return br; 

} 

這裏的「蘋果」是shell腳本的輸入參數,將存儲在$ 1(環境變量),這可從shell腳本訪問,當有什麼需要是從shell腳本發送到Java,從shell腳本回顯並從Java中獲得process.inputStream() ..

相關問題