Как присвоить значение переменной в сценарии оболочки из кода Java - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть переменный параметр (полученный из поля getText в Seleium Automation), который я хочу присвоить значению в специальном месте в сценарии оболочки:

В Java это то, что я делаю:

String ref = workcreation.getfield_ref().getText(); 


  try {  ProcessBuilder pb = new ProcessBuilder("/home/script.sh");
            Process p = pb.start();
            BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line = null;
            while ((line = reader.readLine()) != null)
            {
                System.out.println(line);

                System.out.println("in " + reader);

            }
            p.waitFor();

        }
        catch (IOException e)
        {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

В скрипте script.sh я хочу присвоить значение ref параметру & ref именно в этом месте:

##it is the value of &ref that i want to get 
if [  -d "/data/techVersion_$ref" ]; then
echo "le dossier  existe dans cccc "

else
echo " le dossier  n'existe pas dans  cccc !"
exit
fi

что я могу сделать?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

ProcessBuilder принимает произвольное число String с в качестве аргументов.Первым должен быть сам исполняемый файл, в вашем случае это скрипт "/home/script.sh".В настоящее время вы просто передаете исполняемый файл как один аргумент.Просто добавьте параметры для вашего скрипта в вызов конструктора ProcessBuilder.

Ваша строка

ProcessBuilder pb = new ProcessBuilder("/home/script.sh");

должна быть заменена этим

ProcessBuilder pb = new ProcessBuilder("/home/script.sh", "firstArg", "secondArg");

, или вы создаетеList<String>, содержащий исполняемый файл в качестве первого элемента, за которым следуют параметры, например

List<String> execPlusArgs = new ArrayList<String>();
execPlusArgs.add("/home/script.sh");
execPlusArgs.add("firstArg");
execPlusArgs.add("secondArg");
ProcessBuilder pb = new ProcessBuilder(execPlusArgs);
0 голосов
/ 16 ноября 2018

Вы можете передать аргументы своей команде / скрипту с помощью ProcessBuilder.

В вашем скрипте оболочки вы можете прочитать аргумент.Простой пример:

ProcessBuilder pb = new ProcessBuilder("/home/script.sh", "hello");

в вашем скрипте:

echo "variable set in java: $1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...