You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins共享库sh步骤中字符串插值未生效问题求助

问题解决:Jenkins共享库函数变量未插值

问题根源

你存在两个关键问题:

  1. Groovy中单引号包裹的字符串是纯字面量,不会执行变量插值,所以{name}和{company}直接被当成普通字符串输出。
  2. Groovy的变量插值语法是${变量名},不是{变量名},即便用对了字符串类型,原语法也无法识别变量。

修正后的共享库函数

改用Groovy双引号字符串触发插值,同时修正变量语法,以下两种写法都可行:

写法一:echo使用单引号

def Printing_output(String name, String company){
    sh "echo 'Hi there, this is ${name} and am working for ${company}'"
}

写法二:echo使用转义双引号

def Printing_output(String name, String company){
    sh "echo \"Hi there, this is ${name} and am working for ${company}\""
}

修正逻辑说明

  • 用Groovy双引号字符串包裹sh命令,Groovy会先将${name}和${company}替换为传入的参数值,再把处理后的字符串传给shell执行。
  • 内部echo的引号:如果用单引号,shell会直接输出引号内的内容;如果用双引号,需要在Groovy中转义(\"),避免和外层Groovy的双引号冲突。

预期执行结果

修改后执行流水线,会输出:

Hi there, this is Rajini and am working for Amazon

内容的提问来源于stack exchange,提问作者Ramesh Thiyagarajan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 16:42:03