运行时的exec()方法不redirect输出
Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");
我正在使用Java运行此命令。 脚本正在运行,但不会将其streamredirect到文件。 而且, out.txt
文件没有被创build。
这个脚本运行良好,如果我在shell上运行它。
有任何想法吗?
您需要使用ProcessBuilder
redirect。
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" });