运行时的exec()方法不redirect输出

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

我正在使用Java运行此命令。 脚本正在运行,但不会将其streamredirect到文件。 而且, out.txt文件没有被创build。

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

有任何想法吗?

您需要使用ProcessBuilderredirect。

 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 

当你运行一个命令时,没有运行shell,任何shell命令或函数都不可用。 要使用&>这样的东西&>你需要一个shell。 你有一个,但你没有把它传递给它。 反而尝试。

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