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

Groovy编写Jenkins Pipeline中cURL引用变量的引号问题排查

问题原因

确实是引号使用不当导致的,核心源于Groovy的字符串插值规则:

  • Groovy 单引号包裹的普通字符串不支持变量插值,你代码里的${url}会被原样传给shell,而shell环境中没有定义同名变量,所以实际执行时URL位置为空,就出现了curl提示无URL的报错。

解决方法

有三种常用的修改方案:

方案1:改用双引号包裹sh命令

将sh命令外层的单引号替换为支持变量插值的Groovy双引号,内部的双引号做转义处理即可:

script {
    url = "https://chat.googleapis.com/v1/spaces/AAAAfF9CGEQ/messages?key=******&token=******"
    sh "curl -k ${url} -d \"@chat_notification.json\" -XPOST -H \"Content-Type: application/json; charset=UTF-8\""
}

方案2:使用三双引号(推荐,可读性更高)

如果不想处理内部双引号的转义,可以用Groovy的三双引号包裹命令:

script {
    url = "https://chat.googleapis.com/v1/spaces/AAAAfF9CGEQ/messages?key=******&token=******"
    sh """
        curl -k ${url} -d "@chat_notification.json" -XPOST -H "Content-Type: application/json; charset=UTF-8"
    """.trim()
}

方案3:导出为shell环境变量

也可以将Groovy变量注入到shell执行环境,此时即使使用单引号包裹命令也可以正常读取变量:

script {
    url = "https://chat.googleapis.com/v1/spaces/AAAAfF9CGEQ/messages?key=******&token=******"
    sh '''
        curl -k "${url}" -d "@chat_notification.json" -XPOST -H "Content-Type: application/json; charset=UTF-8"
    ''', [env: ["url=${url}"]]
}

注意事项

如果URL中包含空格、特殊符号,建议给插值后的URL外层额外套一层双引号,避免shell解析异常,写法为"${url}"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:24:06