其實我有兩個命令:如何從Java調用linux命令「source FILE_NAME」?
- 源FILE_NAME
- 安裝ABCD
執行所述第二命令之前,我需要執行的第一個。我綁定執行兩個命令使用Runtime.getRuntime().exec(cmd)
methos,但第二個命令失敗,因爲它取決於第一個。我嘗試了很多組合,但沒有成功。任何人都可以幫我嗎?
其實我有兩個命令:如何從Java調用linux命令「source FILE_NAME」?
執行所述第二命令之前,我需要執行的第一個。我綁定執行兩個命令使用Runtime.getRuntime().exec(cmd)
methos,但第二個命令失敗,因爲它取決於第一個。我嘗試了很多組合,但沒有成功。任何人都可以幫我嗎?
您可能正在執行兩個獨立的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();
有沒有其他方法,只通過java類文件? – user2018023
你的問題非常清楚你想要達到的目標。我假定你想要創建一個文件,然後將文件路徑傳遞給你的第二個進程。 – Brad
感謝@Brad,它工作。我現在使用ProcessBuilder手動放置所有環境變量。 – user2018023
考慮的ProcessBuilder – RNJ
PLZ闡述,如何同時使用兩個命令。 – user2018023