三重双引号(
""")字符串文字语法允许变量/表达式替换(插值),因此反斜杠()被解释为特殊字符“转义”。由于第一个打开的括号不是这样的特殊字符,因此Groovy编译失败。如果要在结果字符串中使用文字反斜杠,则需要转义反斜杠。也就是说,使用双反斜杠(
\)代替一个文字反斜杠。
从而:
sh ("""sed "s/(AssemblyInformationalVersion\(\")(.*)(\")/\1${productVersion}\3/g" AssemblyInfoGlobal/AssemblyInfoGlobal.cs -r""")