一尘不染

詹金斯逃生sed命令

jenkins

有人可以帮我摆脱Jenkins groovy脚本中的sed shell命令吗?

好辛苦

sh ("""
sed "s/(AssemblyInformationalVersion\(\")(.*)(\")/\1${productVersion}\3/g" 
AssemblyInfoGlobal/AssemblyInfoGlobal.cs -r
""")

阅读 263

收藏
2020-07-25

共1个答案

一尘不染

三重双引号(""")字符串文字语法允许变量/表达式替换(插值),因此反斜杠(\)被解释为特殊字符“转义”。由于第一个打开的括号不是这样的特殊字符,因此Groovy编译失败。如果要在结果字符串中使用文字反斜杠,则需要转义反斜杠。也就是说,使用双反斜杠(\\)代替一个文字反斜杠。

从而:

sh ("""
sed "s/(AssemblyInformationalVersion\\(\\")(.*)(\\")/\\1${productVersion}\\3/g" 
AssemblyInfoGlobal/AssemblyInfoGlobal.cs -r
""")
2020-07-25