Reputation: 249
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?
Upvotes: 24
Views: 24267
Reputation: 533472
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" });
Upvotes: 7
Reputation: 9601
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
Upvotes: 47