2012-05-22 54 views
-1

在Mac OS X Lion中運行時,我需要使用命令行中的腳本從遠程服務器檢索文件。我試圖在代碼中使用的命令是「bash/my/path/here/myscript」,並且我已經使用下面的代碼從命令行(atos)運行了另一個進程。如何在Java中運行bash腳本(下載文件)?

Process proc = Runtime.getRuntime().exec(cmd); 

但是,在調試時,程序繼續沒有錯誤,但腳本似乎確實已經運行。此外,當腳本檢索文件時,應該有幾秒鐘的暫停,但我的程序會繼續立即執行。腳本本身在從終端運行時按預期工作。我有點難以理解如何讓這個工作,所以任何幫助將不勝感激。

+0

問題是什麼? 「當程序繼續時,它看起來確實已經運行」是什麼意思?這很難理解。下載文件將是一個異步操作。 – jahroy

+0

@jahroy:bash腳本,cmd似乎沒有運行。 –

+0

好的...你可能想編輯你的問題,所以它沒有說明實際發生的事情的反面。你採取了哪些步驟來調試它爲什麼不運行?你不給我們提供任何代碼,沒有錯誤信息,也沒有解釋......你可能需要花費很多時間來讓你的bash腳本運行。你在哪個平臺上? Linux,Unix,Mac,Cygwin等...? – jahroy

回答

1

得到它與下面的代碼工作 -

Process proc = Runtime.getRuntime().exec(cmd); 
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); 
proc.waitFor(); 

while (in.ready()) { 
    System.out.println(in.readLine()); 
} 

,這是一個問題的另一件事是,該腳本將下載到當前工作目錄,而不是腳本本身的位置(如預期) 。所以腳本會正常運行,而我的程序將繼續無法找到下載的文件。希望這可以幫助。