Jenkins共享库sh步骤中字符串插值未生效问题求助
问题解决:Jenkins共享库函数变量未插值
问题根源
你存在两个关键问题:
- Groovy中单引号包裹的字符串是纯字面量,不会执行变量插值,所以
{name}和{company}直接被当成普通字符串输出。 - 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
相关产品推荐
相关产品推荐

