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
コマンドを実行すると、シェルは実行されておらず、シェルのコマンドまたは関数は使用できません。 &>
のようなものを使用するには、シェルが必要です。あなたはそれを持っていますが、あなたはそれをそれに渡していません。代わりに試してください。
Runtime.getRuntime().exec(new String[] { "sh", "somescript.sh &> out.txt" });