我正在尝试转义Jenkins构建的以下代码中的“@”:
sh "curl --dH "@$Tom" http://google.com"
我怎么才能逃脱呢?
编辑:如果我在@前面使用\,如下所示:
sh "curl --dH "\@$Tom" http://google.com"
我收到另一个错误,指出意外字符“"。
yi0zb3m41#
试试这个。不需要转义@字符,而不是那个,你需要转义双引号和$标记
sh "curl --dH \"@\${Tom}\" http://google.com"
更新:如果Tom是一个变量,它可以像${Tom}这样注入字符串jenkins pipeline语法是groovy的,所以你可以用这个在线groovy ide来尝试它们https://www.jdoodle.com/execute-groovy-online
${Tom}
flvtvl502#
避免在Groovy字符串周围使用双引号,因为如果您不能保证变量的内容是安全的,它们可能会通过Injection via Interpolation导致安全问题。相反,您可以在shell的环境中传递变量:
script { env.Tom = "Hello World"; } sh 'curl --dH "@$Tom" http://google.com' // $Tom is not interpolated by Groovy
2条答案
按热度按时间yi0zb3m41#
试试这个。不需要转义@字符,而不是那个,你需要转义双引号和$标记
更新:如果Tom是一个变量,它可以像
${Tom}
这样注入字符串jenkins pipeline语法是groovy的,所以你可以用这个在线groovy ide来尝试它们
https://www.jdoodle.com/execute-groovy-online
flvtvl502#
避免在Groovy字符串周围使用双引号,因为如果您不能保证变量的内容是安全的,它们可能会通过Injection via Interpolation导致安全问题。
相反,您可以在shell的环境中传递变量: