2017-02-11 94 views
-1

我想通過在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' 

在此先感謝

回答

1

嘗試這個 -

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); 
} 
+0

我試過這個,但它開始等待並且從不返回 \t \t process = Runtime.getRuntime()。exec(command); \t \t System.out.println(「first line」); \t \t process.waitFor(); \t \t的System.out.println( 「第二行」); 在這段代碼中第二行從不打印 –

+0

檢查你的腳本,它是通過命令提示符下執行? – deen

0

你可以看看到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命令,它是在同一時間輸入和輸出命令......所以,你可以有一些麻煩。

+0

謝謝小煜,我得到了我的答案預期命令爲我做:) –

相關問題