Метод exec() Runtime не перенаправляет вывод
Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");
Я запускаю эту команду с помощью Java. Выполняется script, но он не перенаправляет поток в файл. Кроме того, файл out.txt
не создается.
Этот script работает нормально, если я запускаю его в оболочке.
Любые идеи?
Ответы
Ответ 1
Вам нужно использовать 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
Ответ 2
Когда вы запускаете команду, запуск оболочки отсутствует, и никакие команды или функции оболочки недоступны. Чтобы использовать что-то вроде &>
, вам нужна оболочка. У вас есть один, но вы не передаете его ему. попробуйте вместо этого.
Runtime.getRuntime().exec(new String[] { "sh", "somescript.sh &> out.txt" });