2013-01-11 107 views
1

我正在爲一個JSP頁面寫入此代碼,該頁面從文本輸入中讀取並將變量的值作爲參數傳遞給bash文件,但它看起來像bash文件並不「沒有變量,只有當我通過實際值而不是變量時才起作用。 如何將變量傳遞給這個bash文件? 下面是代碼:通過JSP頁面將值作爲bash文件參數傳遞

Process p = Runtime.getRuntime().exec("/root/changeip.cmd 10.0.100.18"); 
+1

現在您正在發送文字'「myArgument」',而不是'myArgument'的*值*。此外,您可能需要使用「ProcessBuilder」來讓它以您想要的方式接受參數;我不確定。 –

+0

檢查這個http://stackoverflow.com/questions/525212/how-to-run-unix-shell-script-from-java-code – Kent

回答

0

你想要的是::

Process p = Runtime.getRuntime().exec("/root/script.cmd " + myArgument); 

<% 
    String myArgument = ""; 

    if (request.getParameter("submit")==null) 
    { 
%> 
<form method="POST" action="/tomcat/webapps/project/jsp/runCMD.jsp" id=form2> 
     <input type=text id=first value="${first}" Title="IP adress here" > 


     <input type="submit" value="Submit Changes" name="submit" 

     onClick="if(runOnSubmit()){getSomethingWithAjax('ChangeIP.jsp'+ 
     getAllFormElementsAndMakeIntoURI(true),'', 
     'hereIsTheMainHeaderSpan',false,false);}"> 
<% 
}//end if 
//else if submitted 
else { 
request.setAttribute("myArgument", myArgument); 

     try { 
    Process p = Runtime.getRuntime().exec("/root/script.cmd myArgument); 
    p.waitFor(); 
    System.out.println("Waiting for the System to reboot" + p.exitValue()); 


} catch (Exception e) { 
    System.out.println(e.getMessage()); 
      out.println("There was an error while submitting "); 
} 

}//end else 

%> 

注意,傳遞一個值到腳本時,得到了與下面的代碼執行PS
其實我沒有看到你在哪裏聲明之後的值賦給myArgument
String myArgument = "";


多大關係,但是你正在做的那種風格的PHP。閱讀本文:https://stackoverflow.com/a/3180202/814702

+0

我應該寫這樣的:myArgument = request.getValue(「第一」) ;首先從文本輸入中讀取。當我將幾個參數傳遞給我的腳本時,我們是否用+來分隔參數? – spitti84

+0

@ spitti84在Java中使用帶字符串的加號(+)時,將它們連接起來。在你的情況下,myArgument是一個[** String **](http://docs.oracle.com/javase/tutorial/java/data/strings.html)對象。在你的第一個例子中,你只是使用「myArgument」作爲**字符串**,即結果是一個單詞'myArgument'。但是你需要String對象的值。這就是爲什麼你實際需要'「/root/script.cmd」+ myArgument'。至於腳本的參數,你可以用空格分隔它們。如果參數包含空格,則用引號括起來。 – informatik01