Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");
我正在使用Java運行此命令。腳本正在運行,但不會將其流重定向到文件。此外,文件out.txt
未被創建。運行時的exec()方法不重定向輸出
這個腳本運行良好,如果我在shell上運行它。
任何想法?
Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");
我正在使用Java運行此命令。腳本正在運行,但不會將其流重定向到文件。此外,文件out.txt
未被創建。運行時的exec()方法不重定向輸出
這個腳本運行良好,如果我在shell上運行它。
任何想法?
您需要使用ProcessBuilder
才能重定向。
ProcessBuilder builder = new ProcessBuilder("sh", "somescript.sh");
builder.redirectOutput(new File("out.txt"));
builder.redirectError(new File("out.txt"));
Process p = builder.start(); // may throw IOException
它工作絕對fine.Thanks ..有沒有任何參考,我可以閱讀更多關於這一點,我必須做很多東西在殼上使用java.So它將對我有用 – user2110167 2013-04-26 14:34:05
@ user2110167 [關於ProcessBuilder的API文檔](http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html) – johnchen902 2013-04-26 14:37:22
謝謝..祝你有美好的一天 – user2110167 2013-04-26 14:38:20
當您運行一個命令時,沒有shell正在運行,並且任何shell命令或函數都不可用。要使用類似&>
的東西,您需要一個外殼。你有一個,但你沒有通過它。反而嘗試。
Runtime.getRuntime().exec(new String[] { "sh", "somescript.sh &> out.txt" });
這不會編譯,是嗎? – 2013-04-26 14:28:53
沒有重載的exec函數需要這樣的輸入,因爲它給出編譯錯誤 – user2110167 2013-04-26 14:30:21
@commentators:'Runtime.getRuntime().exec(new String [] {「sh」,「somescript.sh&> out.txt」} );' – linuxeasy 2017-02-23 08:54:35
爲什麼是&符號? – 2013-04-26 14:18:54
它用於將輸出流和錯誤流重定向到文件 – user2110167 2013-04-26 14:19:37
是否已在系統中搜索文件? – 2013-04-26 14:21:26