我正在爲一個JSP頁面寫入此代碼,該頁面從文本輸入中讀取並將變量的值作爲參數傳遞給bash文件,但它看起來像bash文件並不「沒有變量,只有當我通過實際值而不是變量時才起作用。 如何將變量傳遞給這個bash文件? 下面是代碼:通過JSP頁面將值作爲bash文件參數傳遞
Process p = Runtime.getRuntime().exec("/root/changeip.cmd 10.0.100.18");
我正在爲一個JSP頁面寫入此代碼,該頁面從文本輸入中讀取並將變量的值作爲參數傳遞給bash文件,但它看起來像bash文件並不「沒有變量,只有當我通過實際值而不是變量時才起作用。 如何將變量傳遞給這個bash文件? 下面是代碼:通過JSP頁面將值作爲bash文件參數傳遞
Process p = Runtime.getRuntime().exec("/root/changeip.cmd 10.0.100.18");
你想要的是::
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
我應該寫這樣的:myArgument = request.getValue(「第一」) ;首先從文本輸入中讀取。當我將幾個參數傳遞給我的腳本時,我們是否用+來分隔參數? – spitti84
@ spitti84在Java中使用帶字符串的加號(+)時,將它們連接起來。在你的情況下,myArgument是一個[** String **](http://docs.oracle.com/javase/tutorial/java/data/strings.html)對象。在你的第一個例子中,你只是使用「myArgument」作爲**字符串**,即結果是一個單詞'myArgument'。但是你需要String對象的值。這就是爲什麼你實際需要'「/root/script.cmd」+ myArgument'。至於腳本的參數,你可以用空格分隔它們。如果參數包含空格,則用引號括起來。 – informatik01
現在您正在發送文字'「myArgument」',而不是'myArgument'的*值*。此外,您可能需要使用「ProcessBuilder」來讓它以您想要的方式接受參數;我不確定。 –
檢查這個http://stackoverflow.com/questions/525212/how-to-run-unix-shell-script-from-java-code – Kent