java shell process runtime.exec

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