Runtime's exec() method is not redirecting the output
21,044
Solution 1
You need to use ProcessBuilder
to 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
Solution 2
When you run a command, there is no shell running and any shell commands or functions are not available. To use something like &>
you need a shell. You have one but you are not passing it to it. try instead.
Runtime.getRuntime().exec(new String[] { "sh", "somescript.sh &> out.txt" });
Author by
user2110167
Updated on July 15, 2022Comments
-
user2110167 almost 2 years
Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");
I am running this command using Java. The script is running but it's not redirecting its stream to the file. Moreover, the file
out.txt
is not getting created.This script runs fine if I run it on shell.
Any ideas?