环境变量操作

时间:2017-09-07 13:24:56

标签: jenkins groovy jenkins-pipeline

使用时:

echo "${env.PRODUCT_NAME}"

它会回应:

  

MyProdName

使用时:

echo "${env.MyProdName_Key}"

它会回应:

  

123456789

我想使用如下内容:

echo "${env.${env.PRODUCT_NAME}_Key}"

这可能吗?怎么样?

3 个答案:

答案 0 :(得分:0)

在Bash中,这被称为方向变量

尝试使用变量进一步简化

public class Array {

    private final int[] values;
    private final boolean[] modified;

    public Array(int length) {
        values = new int[length];
        modified = new boolean[length];
    }

    public void set(int index, int value) {
        values[index] = value;
        modified[index] = true;
    }

    public int get(int index) {
        return values[index];
    }

    public boolean isDefaultValue(int index) {
        return !modified[index];
    }

}

这会指定PRODUCT_NAME = MyProdName

同样

PRODUCT_NAME=$(echo "${env.PRODUCT_NAME}")

这将分配MyProdName = 123456789

现在,当您打印PRODUCT_NAME值时,您将获得

 MyProdName=$(echo "${env.MyProdName_Key}")

并添加'!'变量间接将为您提供另一个变量值的值

echo ${PRODUCT_NAME}
MyProdName

答案 1 :(得分:0)

也许这会以某种方式帮助你:

def env = [
    PRODUCT_NAME:'MyProdName',
    MyProdName_Key: 123456789,
]

println "${env[env.PRODUCT_NAME+'_Key']}"

env在提供的示例中为Map,但它的工作方式完全相同。

答案 2 :(得分:0)

重要说明,无论您如何获取变量:

  

如果字符串中的唯一值不需要使用字符串插值   字符串本身就是一个变量。这只会使您的代码混乱。

     

代替:   echo "${env.PRODUCT_NAME}"

     

您可以执行以下操作:   echo.PRODUCT_NAME

此外,您可以使用方括号表示法动态获取嵌套对象的值

  

def obj = [a: '1'] echo obj[a] // outputs '1'

使用这些组合在一起,您可以执行以下操作:

def prodName = env.PRODUCT_NAME //will set var prodName to "MyProdName" echo env[prodName + '_Key'] //gets nested field with key "MyProdName_Key"

(注意:这类似于Opal的答案,希望我的细分对您有所帮助)