Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");
Sto eseguendo questo comando utilizzando Java. Lo script è in esecuzione ma non sta reindirizzando il suo stream al file. Inoltre, il file out.txt
non viene creato.
Questo script funziona bene se lo eseguo su shell.
Qualche idea?
È necessario utilizzare ProcessBuilder
per 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
Quando si esegue un comando, non è in esecuzione alcuna shell e non sono disponibili comandi o funzioni della shell. Per usare qualcosa come &>
hai bisogno di una shell. Ne hai uno ma non lo stai trasmettendo. prova invece
Runtime.getRuntime().exec(new String[] { "sh", "somescript.sh &> out.txt" });