groovy + shell : 转义字符
groovy + shell : Escaping characters
我正在使用 Groovy 沙箱使用 Jenkins 管道。我正在尝试在 groovy sh 函数中 运行 一个 shell 脚本。
原来的shell剧本是
sed -i 's/sometext/'"${othertext}"'/' filename
我正在尝试用其他文本替换特定文本(动态获取)。该脚本在直接执行时工作正常。
但是我想在 jenkins groovy sh 函数中使用它。
sh(script: '<above shell script>', returnStdout:false)
但是有转义字符的问题。
我试过这种转义字符的方式
sh (script: '''sed -i 's/sometext/othertext/' filename''', returnStdout:false)
它工作正常,但 othertext
不是动态拍摄的。
有人可以帮我用原始脚本转义字符吗?
或者请建议任何其他方法。
如果 othertext
是一个 groovy 变量那么这应该有效:
def othertext = 'newtext'
sh (script: """sed -i 's/sometext/${othertext}/' filename""", returnStdout:false)
根据 daggett and mkobit 的输入,我做了一些实验,以下脚本运行良好
def l_othertext = sh(script: 'echo ${othertext}', returnStdout: true).trim()
print('l_othertext='+l_othertext)
sh "sed -i 's/sometext/'${l_othertext}'/' filename"
node{
sh 'sed -i 's/sometext/'"${othertext}"'/' filename'
}
我正在使用 Groovy 沙箱使用 Jenkins 管道。我正在尝试在 groovy sh 函数中 运行 一个 shell 脚本。
原来的shell剧本是
sed -i 's/sometext/'"${othertext}"'/' filename
我正在尝试用其他文本替换特定文本(动态获取)。该脚本在直接执行时工作正常。 但是我想在 jenkins groovy sh 函数中使用它。
sh(script: '<above shell script>', returnStdout:false)
但是有转义字符的问题。 我试过这种转义字符的方式
sh (script: '''sed -i 's/sometext/othertext/' filename''', returnStdout:false)
它工作正常,但 othertext
不是动态拍摄的。
有人可以帮我用原始脚本转义字符吗?
或者请建议任何其他方法。
如果 othertext
是一个 groovy 变量那么这应该有效:
def othertext = 'newtext'
sh (script: """sed -i 's/sometext/${othertext}/' filename""", returnStdout:false)
根据 daggett and mkobit 的输入,我做了一些实验,以下脚本运行良好
def l_othertext = sh(script: 'echo ${othertext}', returnStdout: true).trim()
print('l_othertext='+l_othertext)
sh "sed -i 's/sometext/'${l_othertext}'/' filename"
node{
sh 'sed -i 's/sometext/'"${othertext}"'/' filename'
}