собрать и выполнить скрипт bash из скрипта java с пробелами - PullRequest
1 голос
/ 31 марта 2012

Я создаю Java-приложение, которое будет с графическим интерфейсом для сценария bash.

Приложение будет использоваться для просмотра местоположения сценария и ввода 2 других параметров.

и сборкии выполните команду ..

, поэтому исполняемая часть будет выглядеть следующим образом:

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(scriptPath + parameter1 + parameter2);

, если команда работает, если в месте расположения скрипта нет пробелов ..

но когда у него есть пробелы, он останавливается, когда достигает первого пробела ... и выдает мне "java.io.IOException:" исключение..это файл не найден ..

я пыталсязаменив пробелы на backspace и space ..

scriptPath.replace(" ", "\\ ")

Я также попытался добавить кавычки до и после пути

"\"" + scriptPath + "\""

, и я попробовал их обоих вместе ..

"\"" + scriptPath.replace(" ", "\\ ") + "\""

но ни один из них не сработал ..

любая помощь будет оценена ..

С уважением ..

Ответы [ 2 ]

2 голосов
/ 31 марта 2012

Runtime exec(String) метод просто разбивает строку на пробел; он не понимает никаких цитат. Вместо этого вы можете использовать exec(String[]) метод , который принимает массив, поэтому не нужно применять логику разбиения:

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(new String[] { scriptPath, parameter1, parameter2 });
2 голосов
/ 31 марта 2012

Используйте взамен ProcessBuilder. Он имеет конструктор, который позволяет добавлять параметры в виде отдельных строк и должен обрабатывать пробелы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...