Groovy脚本问题:如何通过变量名获取预定义列表的实际值?
问题解决:Groovy中返回列表变量而非字符串值
你当前代码的问题在于allclusters被赋值为字符串'STAGE_ALL',而非引用列表变量STAGE_ALL,所以返回的只是字符串内容。以下是几种解决方法:
方法1:直接引用列表变量
如果不需要动态指定变量名,直接将allclusters绑定到列表变量即可:
// Static content examples. These lists can be generated dynamically as an alternative. List STAGE_ALL = ["aceapp01","aceapp02","aceapp03","acemgt01"] def allclusters = STAGE_ALL // 直接引用列表变量,而非字符串 String ServerType= 'ALL' if (ServerType == 'ALL') { return allclusters } else { return default_item }
方法2:通过Binding动态获取变量值
如果必须保留字符串形式的变量名(比如变量名是动态生成的),可以利用Groovy的binding对象获取对应变量的值:
// Static content examples. These lists can be generated dynamically as an alternative. List STAGE_ALL = ["aceapp01","aceapp02","aceapp03","acemgt01"] String allclusters = 'STAGE_ALL' String ServerType= 'ALL' if (ServerType == 'ALL') { return binding.variables[allclusters] // 通过binding获取变量的实际值 } else { return default_item }
方法3:用Map管理集群列表(推荐)
如果存在多个集群列表需要管理,用Map存储会更灵活易扩展:
// 用Map统一存储所有集群列表,便于后续扩展 def clusters = [ STAGE_ALL: ["aceapp01","aceapp02","aceapp03","acemgt01"], // 可添加其他集群,例如 PROD_ALL: ["prodapp01", "prodmgt01"] ] String allclusters = 'STAGE_ALL' String ServerType= 'ALL' if (ServerType == 'ALL') { return clusters[allclusters] } else { return default_item }
内容的提问来源于stack exchange,提问作者Sarvesh Agarwal
相关产品推荐
相关产品推荐

