Я новичок в программировании. Я создал список строк для ProcessBuilder. ProcessBuilder выполняет одну команду из списка String (и успешно записывает файл, который я попросил написать), но не выполняет следующую команду String. Вот код:ProcessBuilder выполняет одну команду из списка String, но не выполняет следующую команду.
List<String> vsArrays = new ArrayList<String>();
vsArrays.add("/bin/sh");
vsArrays.add("-c");
vsArrays.add("echo '123' > ~/1.rad");
vsArrays.add("echo '123' > ~/2.rad");
vsArrays.add("echo '123' > ~/3.rad");
for (String s : vsArrays){
system.out.println(s);
}
ProcessBuilder proc = new ProcessBuilder(vsArrays);
Process start = proc.start();
start.waitFor();
Первый файл (с именем 1.rad) создается в домашнем каталоге (~), но следующие файлы не являются. Хотя мне удалось выполнить следующие команды (и записать другие файлы), используя redirectInput из файла, но я не хочу создавать отдельный файл для redirectInput. Можете ли вы ответить, почему следующие команды (из списка строк) не выполняются? Благодаря!
Спасибо! Но ProcessBuilder выполняет несколько команд через redirectInput. Так будет ли какое-либо решение, если я изменил параметр «-c» для программы «sh» на какой-то другой вариант? Я посмотрел на руководство sh, но не смог найти подходящий вариант. – Vaib
Возможно, вы прочитали ответ, когда я редактировал последнюю часть; существует упомянутое решение, вставляя несколько ';' -сепаратированных команд в один аргумент. – Holger
Спасибо! Это сработало! У меня нет репутации для обновления вашего решения. Благодаря! – Vaib