El método exec () de Runtime no está redirigiendo la salida

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 secuencia al archivo. Además, el archivo out.txt no se está creando.

Este script funciona bien si lo ejecuto en shell.

¿Algunas ideas?

Necesita 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 

Cuando ejecuta un comando, no se ejecuta el shell y los comandos o funciones del shell no están disponibles. Para usar algo como &> necesitas un caparazón. Tienes uno pero no lo estás pasando. prueba en cambio.

 Runtime.getRuntime().exec(new String[] { "sh", "somescript.sh &> out.txt" });