使用时:
echo "${env.PRODUCT_NAME}"
它会回应:
MyProdName
使用时:
echo "${env.MyProdName_Key}"
它会回应:
123456789
我想使用如下内容:
echo "${env.${env.PRODUCT_NAME}_Key}"
这可能吗?怎么样?
答案 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的答案,希望我的细分对您有所帮助)