如何使用Java重定向shell脚本的输出?
我正在尝试使用Java在Linux(Ubuntu)中执行一个shell脚本,并尝试将输出重定向到另一个文件如何使用Java重定向shell脚本的输出?,java,linux,bash,shell,sh,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文件中。 有人能建议一个正确的方法吗?使用一个。我认为没有必要产生额外的sh。大概 ProcessB
String cmd[] = {"sh", "-c", "my_dir/script.sh > new_dir/out.txt"};
Process pb = Runtime.getRuntime().exec(cmd);
然而,这使我们无法正常工作。我无法将输出存储在out.txt文件中。
有人能建议一个正确的方法吗?使用一个。我认为没有必要产生额外的sh
。大概
ProcessBuilder pb = new ProcessBuilder("my_dir/script.sh");
pb.redirectOutput(new File("new_dir/out.txt"));
Process p = pb.start();
应该就是你所需要的了。这对我很有用。
使用Runtime.exec()
new_dir
是否已经存在?是否允许执行脚本?@Henry是的,它存在假定我同时还想打印脚本文件的输出,我将如何执行该操作?@AbhishekGangadhar您的问题是如何执行shell重定向。您是在问如何使用Java读取流程输出吗?@Elliott Frisch我是如何在process Builder中使用tee
命令的?
Process p = Runtime.getRuntime().exec("my_dir/script.sh > new_dir/out.txt");
// Wait for execution completion
p.waitFor();