运行时的exec()方法不会重定向输出

时间:2013-04-26 14:17:34

标签: java shell process runtime.exec

Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");

我正在使用Java运行此命令。该脚本正在运行,但它没有将其流重定向到该文件。此外,文件out.txt尚未创建。

如果我在shell上运行它,这个脚本运行正常。

有什么想法吗?

2 个答案:

答案 0 :(得分:34)

您需要使用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

答案 1 :(得分:6)

运行命令时,没有shell运行,并且任何shell命令或函数都不可用。要使用&>之类的东西,你需要一个shell。你有一个,但你没有把它传递给它。试着改为。

Runtime.getRuntime().exec(new String[] { "sh", "somescript.sh &> out.txt" });