Jenkins造型中的逃脱角色

frebpwbc  于 2023-03-17  发布在  Jenkins
关注(0)|答案(2)|浏览(141)

我正在尝试转义Jenkins构建的以下代码中的“@”:

sh "curl --dH "@$Tom" http://google.com"

我怎么才能逃脱呢?

编辑:如果我在@前面使用\,如下所示:

sh "curl --dH "\@$Tom" http://google.com"

我收到另一个错误,指出意外字符“"。

yi0zb3m4

yi0zb3m41#

试试这个。不需要转义@字符,而不是那个,你需要转义双引号和$标记

sh "curl --dH \"@\${Tom}\" http://google.com"

更新:如果Tom是一个变量,它可以像${Tom}这样注入字符串
jenkins pipeline语法是groovy的,所以你可以用这个在线groovy ide来尝试它们
https://www.jdoodle.com/execute-groovy-online

flvtvl50

flvtvl502#

避免在Groovy字符串周围使用双引号,因为如果您不能保证变量的内容是安全的,它们可能会通过Injection via Interpolation导致安全问题。
相反,您可以在shell的环境中传递变量:

script {
    env.Tom = "Hello World";
}

sh 'curl --dH "@$Tom" http://google.com'  // $Tom is not interpolated by Groovy

相关问题