2013-04-01 65 views
-1

其實我有兩個命令:如何從Java調用linux命令「source FILE_NAME」?

  1. 源FILE_NAME
  2. 安裝ABCD

執行所述第二命令之前,我需要執行的第一個。我綁定執行兩個命令使用Runtime.getRuntime().exec(cmd) methos,但第二個命令失敗,因爲它取決於第一個。我嘗試了很多組合,但沒有成功。任何人都可以幫我嗎?

+2

考慮的ProcessBuilder – RNJ

+0

PLZ闡述,如何同時使用兩個命令。 – user2018023

回答

1

您可能正在執行兩個獨立的exec命令,產生單獨的進程,因此無論您在第一個進程中執行什麼操作,第二個進程都不可見。通過將所有命令放入腳本(bash,ksh等)並從Java程序中調用一次來解決此問題。

參數化您的腳本,以便您可以傳遞參數。

這裏有writing your first shell script


[編輯]正如@RNJ提到的,你可以看看使用ProcessBuilder在環境變量傳遞到每個工序產生了一定的幫助。如果您可以提前指定正在創建的文件的名稱,這將會很好。從上面的API鏈接所採取的示例代碼...

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2"); 
Map<String, String> env = pb.environment(); 
env.put("VAR1", "myValue"); 
env.remove("OTHERVAR"); 
env.put("VAR2", env.get("VAR1") + "suffix"); 
pb.directory(new File("myDir")); 
Process p = pb.start(); 
+0

有沒有其他方法,只通過java類文件? – user2018023

+0

你的問題非常清楚你想要達到的目標。我假定你想要創建一個文件,然後將文件路徑傳遞給你的第二個進程。 – Brad

+0

感謝@Brad,它工作。我現在使用ProcessBuilder手動放置所有環境變量。 – user2018023