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

如何在CURL命令中使用变量?共享库流水线curl调用失败求修复方案

问题根因

Jenkins Pipeline 语法规则中,单引号包裹的字符串不会解析 Groovy 变量。你当前的sh命令外层用了单引号,${ApplicationName}是 Groovy 侧的函数入参,该场景下不会被 Groovy 替换值,会直接传给 Shell 层当做 Shell 变量读取,而 Shell 环境中没有对应ApplicationName变量赋值,因此请求参数异常,命令执行不生效。

修复方案

根据你的变量作用域选择对应写法即可:

情况1:USERPASS、UDEPLOY_URL为 Groovy 层变量(如共享库中定义的变量、Jenkins 凭证变量)

直接将sh命令外层的单引号改为双引号,让 Groovy 完成所有变量插值后再传给 Shell 执行:

sh "curl -u $USERPASS '${UDEPLOY_URL}/cli/application/environmentsInApplication?application=${ApplicationName}' > uDeployEnvChoice.json"

情况2:USERPASS、UDEPLOY_URL为 Shell 层环境变量(如通过withEnv注入、Jenkins 全局环境配置)

需要转义 Shell 变量前的$符号,避免被 Groovy 提前解析:

sh "curl -u \$USERPASS '\$UDEPLOY_URL/cli/application/environmentsInApplication?application=${ApplicationName}' > uDeployEnvChoice.json"

验证建议

可在该sh步骤前增加打印逻辑确认入参传递是否正常:

println "传入的应用名参数值为:${ApplicationName}"

也可以给curl命令增加-v参数打印请求详情,方便快速定位问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 04:12:11