Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

groovy + shell : Escaping characters

I am using Jenkins Pipeline using Groovy sandbox. And i am trying to run a shell script in a groovy sh function.

The original shell script is

sed -i 's/sometext/'"${othertext}"'/' filename

I am trying to replace a particular text with other text (taken dynamically). The script works fine when executed directly. But I want to use it in jenkins groovy sh function.

sh(script: '<above shell script>',  returnStdout:false)

But there is a problem of escaping characters. I tried this way of escaping character

sh (script: '''sed -i 's/sometext/othertext/' filename''', returnStdout:false)

It works fine but othertext is not taken dynamically. Can someone please help me in escaping characters with the original script? Or please suggest any other way of doing this.

like image 463
Siddarth Avatar asked Oct 16 '22 13:10

Siddarth


1 Answers

With the inputs from daggett and mkobit and i did few experiments, the following script worked well

def l_othertext = sh(script: 'echo ${othertext}', returnStdout: true).trim()
print('l_othertext='+l_othertext)
sh "sed -i 's/sometext/'${l_othertext}'/' filename"
like image 97
Siddarth Avatar answered Nov 24 '22 07:11

Siddarth