簡體   English   中英

如何通過Java代碼將值分配給Shell腳本中的變量

[英]How to assign a value into a variable in a shell script from a java code

我有一個變量參數(從Seleium Automation中的getText字段檢索),我想將值分配給shell腳本中的特定位置:

在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

我能做什么?

您可以通過ProcessBuilder將參數傳遞給命令/腳本。

在您的Shell腳本中,您可以讀取參數。 一個簡單的例子是:

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

在您的腳本中:

echo "variable set in java: $1"

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM