如何使用Java重定向shell脚本的输出?

时间:2018-03-05 06:50:04

标签: java linux bash shell sh

我正在尝试使用Java在Linux(Ubuntu)中执行shell脚本,并尝试将输出重定向到另一个文件。

String cmd[] = {"sh", "-c", "my_dir/script.sh > new_dir/out.txt"};
Process pb = Runtime.getRuntime().exec(cmd);

然而,这使我们无法正常工作。我无法将输出存储在out.txt文件中。 有人可以建议一种方法来正确地做到这一点吗?

2 个答案:

答案 0 :(得分:1)

使用ProcessBuilder。我认为不需要产生额外的sh。像,

ProcessBuilder pb = new ProcessBuilder("my_dir/script.sh");
pb.redirectOutput(new File("new_dir/out.txt"));
Process p = pb.start();

应该就是您所需要的一切。

答案 1 :(得分:1)

这对我有用。  使用Runtime.exec()

    Process p = Runtime.getRuntime().exec("my_dir/script.sh > new_dir/out.txt");
    // Wait for execution completion 
    p.waitFor();