Я пытаюсь создать java-программу, которая принимает некоторые пользовательские переменные и передает их в perl-скрипт (она фактически находит определенную строку в perl-скрипте и заменяет ее пользователем переменные-переменные). Вот код:Невозможно запустить команду UNIX из Java-программы
String sedMain = "sed -e ";
String sedFirstLine = "'s/AAA/"+newFirstLine+"/' -e ";
String sedNewCntr = "'s/BBB/"+newCntr+"/' -e ";
String sedNewSpacing = "'s/SPACE/"+newSpacing+"/' -e ";
String sedNewDmax = "'s/MAX/"+newDmax+"/'";
String sedFile = " /filepath/myperlscript.pl > /filepath/myNEWperlscript.pl";
String sedCommand=sedMain+sedFirstLine+sedNewCntr+sedNewSpacing+sedNewDmax+sedFile;
System.out.println("SED COMMAND: "+sedCommand);
String testRun = "touch /filepath/hello.txt";
Process runSedCommand;
runSedCommand = Runtime.getRuntime().exec(sedCommand);
Я использую IDE, и когда СЭД команда печатается на консоли, это выглядит правильно. Я скопировал команду sed из консоли и запускал ее с терминала, и это сработало. Я написал строку testRun, чтобы увидеть, была ли проблема с процессом в Java, и он создал файл «hello.txt». По какой-то причине моя программа не создает выходной файл perl «myNEWperlscript.pl». Я очень смущен, почему это не работает. Может ли кто-нибудь помочь?
exec() принимает строку с именем и параметрами программы как свои элементы, но вы объединяете все вместе в одну строку и так эффективно теряете аргументы. –
Так что я должен просто написать одну строку, содержащую все элементы? –
Нет, вам нужно создать массив строк –