Я пытаюсь выполнить скрипт bash, который принимает 3 параметра из Java, ниже приведен код, в котором я создаю командную строку
CommandLine command = new CommandLine(/bin/bash);
command.addArgument(ScriptName);
command.addArgument(Param1);
command.addArgument(Param2);
command.addArgument(Param3);
Это работает как талисман, когда передаются непустые параметры,Но не работает так, как предполагается, чтобы один из параметров был пуст (т. Е. "")
Для уточнения, в некоторых случаях Param2 = "".Теперь, когда выполняется скрипт bash, вместо того, чтобы рассматривать Param2 = "", он принимает Param2 = Param 3 (значение) и Param3 = undefined.
Как мне предотвратить это?
Редактировать: Param1, Param2 и Param3 - это имена файлов, которые передаются в скрипт bash.Где, Param1 => File1, Param2 => File 2 & Param3 => Выходной файл
Сценарий Bash фактически вызывает и генерирует некоторые метрики для файла 1 и сохраняет его в выходном файле.При создании метрик существует 2 категории метрик, которые генерируются.
- Абсолют
- Относительный
Абсолют генерируется в файле 1, а относительный генерируется после сравнения файла 1 и файла 2. В скрипте bash Iесть условие, если Файл 2 не передан в качестве аргумента, не генерируйте относительные метрики.
Это то, что было разработано.Теперь возникают проблемы, когда отсутствует файл 2 для сравнения, и в этом случае я хочу, чтобы были сгенерированы абсолютные и относительные показатели.
Но сейчас то, что происходит со мной, - это параметр 3 (т.е.является выходным файлом) рассматривается как Файл 2 (что совершенно нежелательно), и моя относительная генерация метрик идет на бросок.
При использовании Runtime.getRuntime (). exec я смог сделать это, заключив в кавычкиЭто.ie / bin / bash Script Param1 "" Param3 работал тогда как шарм.
В моей попытке уменьшить код и получить хорошую межплатформенную поддержку я ввел commons-exec, и проблема начала появляться.
Итак, мой вопрос по-прежнему таков: как передать и очистить значение Param2 для скрипта bash с помощью commons-exec CommandLine?