【问题标题】:How do I redirect output of a shell script using Java?如何使用 Java 重定向 shell 脚本的输出?
【发布时间】:2018-08-12 18:43:43
【问题描述】:

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

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

但是,我们无法正常工作。我无法将输出存储在 out.txt 文件中。 有人可以建议一种正确执行此操作的方法吗?

【问题讨论】:

  • new_dir 是否已经存在?
  • 脚本执行权限?
  • @Henry 是的,它存在

标签: java linux bash shell sh


【解决方案1】:

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

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

应该是你所需要的。

【讨论】:

  • 假设我还想同时打印脚本文件的输出,我该怎么做呢?
  • @AbhishekGangadhar 您的问题是如何进行外壳重定向。你问的是如何使用 Java 读取进程输出?
  • @Elliott Frisch 我如何将tee 命令与 Process Builder 一起使用?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 2014-09-01
    • 2010-09-23
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多