Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");
Javaを使用してこのコマンドを実行しています。スクリプトは実行されていますが、ストリームをファイルにリダイレクトしていません。さらに、ファイルout.txt
が作成されていません。
このスクリプトをシェルで実行すると、問題なく実行されます。
何か案は?
Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");
Javaを使用してこのコマンドを実行しています。スクリプトは実行されていますが、ストリームをファイルにリダイレクトしていません。さらに、ファイルout.txt
が作成されていません。
このスクリプトをシェルで実行すると、問題なく実行されます。
何か案は?
ProcessBuilder
を使用してリダイレクトする必要があります。
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
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" });