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

如何在Jenkins的sh()调用中转义&符号?

解决Jenkins Groovy中sh()调用curl带多GET参数被拆分的问题

你的问题核心是Groovy双引号字符串会解析特殊字符,同时shell把&识别为后台执行命令的分隔符,导致curl命令被拆分成多个独立命令。以下几种方法可以解决:

  • 使用单引号包裹sh命令内容
    Groovy的单引号字符串是字面量,不会解析内部的特殊字符,&会直接作为URL的一部分传递给shell:

    sh('curl http://example.com/page.cgi?param1=a&param2=b&param3=c')
    
  • 双引号下转义&
    如果需要在双引号中使用变量(比如动态参数),需要对&进行双重转义——先转义Groovy的解析,再转义shell的解析:

    sh("curl http://example.com/page.cgi?param1=a\\&param2=b\\&param3=c")
    
  • 在shell层面用单引号包裹URL
    给整个URL加上单引号,让shell把URL当作一个整体,不会解析其中的&:

    sh("curl 'http://example.com/page.cgi?param1=a&param2=b&param3=c'")
    

内容的提问来源于stack exchange,提问作者Roland Bär

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:46:02