java execute command line
El método exec() de Runtime no está redirigiendo la salida (2)
Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");
Estoy ejecutando este comando usando Java. La secuencia de comandos se está ejecutando, pero no está redirigiendo su flujo al archivo. Por otra parte, el archivo out.txt
no se está creando.
Este script se ejecuta bien si lo ejecuto en shell.
¿Algunas ideas?
Cuando ejecuta un comando, no hay shell ejecutándose y ningún comando o función de shell está disponible. Para usar algo como &>
necesita una cáscara. Usted tiene uno, pero no se lo está pasando. intente en su lugar
Runtime.getRuntime().exec(new String[] { "sh", "somescript.sh &> out.txt" });
Necesitas usar ProcessBuilder
para redirigir.
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