如何使用从Properties文件读取的Groovy变量?Jenkins Pipeline问题
解决方案
1. Shell脚本中变量引用失效的修复
你用三个单引号(''')包裹Shell脚本时,Groovy会直接将内容原封不动传递给Shell,不会解析其中的Groovy变量。而Shell本身不认识${a}这个Groovy变量,所以输出空值。
修复方式二选一:
- 改用双引号(
")包裹Shell脚本,让Groovy先解析变量再传递给Shell:sh "echo 'a: ${env.a}'" - 利用Jenkins会将
env变量注入Shell环境的特性,直接用Shell的变量语法引用:sh ''' echo "a: $a" '''
2. 解决${env.a}: bad substitution错误
这个错误是因为在三个单引号的Shell脚本中写了${env.a},Shell会把它当作自身的参数扩展语法,但env.a不符合Shell变量命名规则(不能包含.),因此报错。改用上面两种写法即可解决。
3. 简化Properties加载代码(可选)
你当前的循环加载逻辑可以简化为更简洁的写法,效果完全一致:
props = readProperties file:"application.properties" env << props
或者逐行处理的写法:
readProperties(file:"application.properties").each { k, v -> env[k] = v }
内容的提问来源于stack exchange,提问作者Bryan Tan
相关产品推荐
相关产品推荐

