ora*_*nge 10 groovy continuous-integration escaping jenkins
有人可以在Jenkins groovy脚本中为我逃脱这个sed shell命令吗?
太难了
sh ("""
sed "s/(AssemblyInformationalVersion\(\")(.*)(\")/\1${productVersion}\3/g"
AssemblyInfoGlobal/AssemblyInfoGlobal.cs -r
""")
Run Code Online (Sandbox Code Playgroud)
Bal*_*Rog 15
三重双引号(""")字符串文字语法允许变量/表达式替换(插值),因此反斜杠(\)被解释为特殊字符"转义".由于第一个打开的paren不是这样一个特殊字符,Groovy编译失败了.如果您的意图是在结果字符串中包含文字反斜杠,则需要转义反斜杠.也就是说,使用双反斜杠(\\)替换一个文字反斜杠.
从而:
sh ("""
sed "s/(AssemblyInformationalVersion\\(\\")(.*)(\\")/\\1${productVersion}\\3/g"
AssemblyInfoGlobal/AssemblyInfoGlobal.cs -r
""")
Run Code Online (Sandbox Code Playgroud)
因此,如果你想在String groovy变量中替换一些字符或单词,例如将 "/" 替换为"/"以便转义一个特殊字符,在我们的例子中它将是正斜杠,你可以使用下面的代码.
因此,之后我们将能够应用linux sed命令而不会出现错误(例如,使用sed将地方持有者值替换为.env文件中的所需值).
下面我们展示一个Jenkins Pipeline Groovy代码:
String s = "A/B/C"
your_variable = s.replace("/", "\\/")
sh "sed -i -e 's/string_to_replace/${your_variable}/g' path/to/file/.env"
Run Code Online (Sandbox Code Playgroud)
注意: ${your_variable}将获取变量的内容.
验证:
echo "Your variable new content: ${your_variable}"
Run Code Online (Sandbox Code Playgroud)
结果:
Your variable new content: A\/B\/C
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18130 次 |
| 最近记录: |