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

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

如果我在 shell 上运行这个脚本,它运行良好。

有任何想法吗?

4

2 回答 2

44

您需要使用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
于 2013-04-26T14:29:50.750 回答
7

运行命令时,没有运行 shell,任何 shell 命令或函数都不可用。要使用类似的东西,&>你需要一个外壳。你有一个,但你没有把它传递给它。试试吧。

Runtime.getRuntime().exec(new String[] { "sh", "somescript.sh &> out.txt" });
于 2013-04-26T14:25:12.313 回答