Groovy中如何将另一个变量的值作为变量名进行赋值?
Groovy动态变量名赋值实现方案
通用Groovy环境实现
你可以直接通过当前上下文的Binding对象实现动态变量赋值:
name = "some_name" address = "some_value" // 将变量值作为新变量名赋值 this.binding.setVariable(name, address) // 验证输出 println "this is \"${some_name}\""
执行后输出:
this is "some_value"
Jenkins Pipeline专用实现
如果是在Jenkins流水线中使用,更推荐直接操作env全局环境变量,所有构建步骤都可以直接访问:
// 假设这是用户传入的键值对Map def userInputMap = [ "some_name": "some_value", "other_key": "other_value" ] // 批量暴露为全局环境变量 userInputMap.each { key, value -> env.setProperty(key, value) } // 后续步骤直接访问 echo "this is \"${env.some_name}\"" // 也可以省略env前缀直接访问(取决于Jenkins版本配置) echo "this is \"${some_name}\""
如果不需要全局生效,仅需要在当前脚本上下文生效,也可以使用和通用Groovy一致的binding方案。
错误写法说明
你之前尝试的"${name}" = "${value}"写法不符合Groovy语法规则,赋值符号左侧必须是可写的变量引用,不能是字符串字面量,所以会抛出语法错误。
内容的提问来源于stack exchange,提问作者Mintu
相关产品推荐
相关产品推荐

