有人可以在Jenkins groovy腳本中爲我逃脫這個sed shell命令嗎?jenkins escape sed命令
太難了。
sh ("""
sed "s/(AssemblyInformationalVersion\(\")(.*)(\")/\1${productVersion}\3/g"
AssemblyInfoGlobal/AssemblyInfoGlobal.cs -r
""")
有人可以在Jenkins groovy腳本中爲我逃脫這個sed shell命令嗎?jenkins escape sed命令
太難了。
sh ("""
sed "s/(AssemblyInformationalVersion\(\")(.*)(\")/\1${productVersion}\3/g"
AssemblyInfoGlobal/AssemblyInfoGlobal.cs -r
""")
三重雙引號("""
)字符串文本語法允許可變/表達式替換(內插),因此反斜槓(\
)被解釋爲一個特殊字符「逃逸」。由於第一個開放paren不是一個特殊字符,Groovy編譯失敗。如果你的意圖是在結果字符串中有文字反斜槓,你需要跳過反斜槓。也就是說,使用雙反斜槓(\\
)替換一個文字反斜槓。
因此:
sh ("""
sed "s/(AssemblyInformationalVersion\\(\\")(.*)(\\")/\\1${productVersion}\\3/g"
AssemblyInfoGlobal/AssemblyInfoGlobal.cs -r
""")
所以,如果要替換一些字符或單詞中的字符串常規可變,例如爲了更換「/」與「/」到轉義一個特殊字符,在我們的例子中將是正斜槓,您可以使用下面的代碼。
因此,之後我們將能夠應用linux sed命令而不會出現錯誤(例如,使用sed在.env文件中用所需的值替換佔位符值)。
下面我們展示了一個詹金斯管道的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"
注:${your_variable}
會得到你的變量的內容。
驗證:
echo "Your variable new content: ${your_variable}"
結果:
Your variable new content: A\/B\/C
([與Groovy和SED命令變量替換字符串]的可能的複製http://stackoverflow.com/questions/ 40878024 /使用groovy和sed命令替換字符串變量) – doelleri