如何在Jenkins的sh()调用中转义&符号?
解决Jenkins Groovy中sh()调用curl带多GET参数被拆分的问题
你的问题核心是Groovy双引号字符串会解析特殊字符,同时shell把&识别为后台执行命令的分隔符,导致curl命令被拆分成多个独立命令。以下几种方法可以解决:
使用单引号包裹sh命令内容
Groovy的单引号字符串是字面量,不会解析内部的特殊字符,&会直接作为URL的一部分传递给shell:sh('curl http://example.com/page.cgi?param1=a¶m2=b¶m3=c')双引号下转义
&
如果需要在双引号中使用变量(比如动态参数),需要对&进行双重转义——先转义Groovy的解析,再转义shell的解析:sh("curl http://example.com/page.cgi?param1=a\\¶m2=b\\¶m3=c")在shell层面用单引号包裹URL
给整个URL加上单引号,让shell把URL当作一个整体,不会解析其中的&:sh("curl 'http://example.com/page.cgi?param1=a¶m2=b¶m3=c'")
内容的提问来源于stack exchange,提问作者Roland Bär
相关产品推荐
相关产品推荐

