Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java重定向shell脚本的输出?_Java_Linux_Bash_Shell_Sh - Fatal编程技术网

如何使用Java重定向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

我正在尝试使用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
。大概

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();