2012-09-18 65 views
1

任何人都可以幫助我如何編譯一個bash腳本作爲java程序的一部分。我正在寫一個簡單的java程序,我想用它來調用bash腳本命令。如何將Bash與Java集成


我的Java代碼如下所示:

try{ 
      Process p = Runtime.getRuntime().exec("myscript.sh"); 
     BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); 

     String line = null; 

     while ((line = in.readLine()) != null){ 
        System.out.println(line); 
     } 
    } 
    catch(IOException e){ 
     System.out.println(e.getMessage()); 
    } 

和 「mysrcipt.sh」 文件是一個簡單的腳本包含以下幾行


/斌/ bash

echo「輸入您的輸入,然後按[ENTER]:」

閱讀-e選擇

回聲$選擇


我的問題是,程序等待在讀命令,即使我輸入多行,然後按Enter鍵數次腳本的輸入。

回答

1

這將是有益的,看看一些代碼,顯示你要完成的任務。在Java中

執行bash腳本可以使用類似下面的做...

Runtime runtime = Runtime.getRuntime(); 
Process process = runtime.exec("YOUR COMMAND STRING"); 

List<String> lines = IOUtils.readLines(process.getInputStream()); 
+1

這就是'org.apache.commons.io.IOUtils',順便說一句,不是標準的Java庫。 – DNA

+0

好點,我抓住了一段前一段我寫的代碼,並沒有檢查進口。我爲Reimeus的更一般的形式+1。 – shortstuffsushi

3

您可以使用:

Process p = Runtime.getRuntime().exec("bash_script.sh"); 
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); 
String line = null; 
while ((line = in.readLine()) != null) { 
    // use bash script line output 
} 
1

的Runtime.exec()是你需要執行你的bash腳本,但要注意有一些什麼樣的陷阱。在開始調用外部腳本時,我發現this是一篇很好的文章。

它是爲Windows平臺編寫的,但是討論的許多內容也與* nix相關。

另請參閱this question

+0

關於該文章,你是否記錄了該文章發佈的日期? Dec 29,2000 12:00 AM? –