我想通過在Linux平臺上的Java運行一個腳本,簡單地問問題,我可以鍵入的答案,那麼它可以進一步進行。我無法找到辦法做到這一點。 我可以通過java運行我的腳本,但它如何接受我的答案?我可以通過java運行交互式腳本嗎?
這裏是我的簡單的腳本test.sh
read -p "What is your name?" name echo $name read -p "What is your age?" age echo $age echo 'done'
在此先感謝
我想通過在Linux平臺上的Java運行一個腳本,簡單地問問題,我可以鍵入的答案,那麼它可以進一步進行。我無法找到辦法做到這一點。 我可以通過java運行我的腳本,但它如何接受我的答案?我可以通過java運行交互式腳本嗎?
這裏是我的簡單的腳本test.sh
read -p "What is your name?" name echo $name read -p "What is your age?" age echo $age echo 'done'
在此先感謝
嘗試這個 -
String command = "test.sh";
Process process;
process = Runtime.getRuntime().exec(command);
process.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String response= "";
while ((response= reader.readLine()) != null) {
System.out.println(response);
}
你可以看看到ProcessBuilder
類:
ProcessBuilder pb = new ProcessBuilder("/path_to_your_script.sh");
pb.inheritIO(); // redirect input and output
Process p = pb.start();
p.waitFor(); // allow to wait the end of your process
然而,在你的腳本比如你有一個read -p
命令,它是在同一時間輸入和輸出命令......所以,你可以有一些麻煩。
謝謝小煜,我得到了我的答案預期命令爲我做:) –
我試過這個,但它開始等待並且從不返回 \t \t process = Runtime.getRuntime()。exec(command); \t \t System.out.println(「first line」); \t \t process.waitFor(); \t \t的System.out.println( 「第二行」); 在這段代碼中第二行從不打印 –
檢查你的腳本,它是通過命令提示符下執行? – deen