I want to use a variable which I am using inside of my Jenkinsfile script, and then pass its value into a shell script execution (either as an environment varia
Extension to Matts answer: For multi-line sh scripts use
sh """
echo ${paramName}
"""
instead of
sh '''
echo ${paramName}
'''
try this:
for (i in [ 'a', 'b', 'c' ]) {
echo i
sh '''
echo "from shell i=$i"
'''
}
Your code is using a literal string and therefore your Jenkins variable will not be interpolated inside the shell command. You need to use " to interpolate your variable inside your strings inside the sh. ' will just pass a literal string. So we need to make a few changes here.
The first is to change the ' to ":
for (i in [ 'a', 'b', 'c' ]) {
echo i
sh "echo "from shell i=$i""
}
However, now we need to escape the " on the inside:
for (i in [ 'a', 'b', 'c' ]) {
echo i
sh "echo \"from shell i=$i\""
}
Additionally, if a variable is being appended directly to a string like you are doing above ($i onto i=), we need to close it off with some curly braces:
for (i in [ 'a', 'b', 'c' ]) {
echo i
sh "echo \"from shell i=${i}\""
}
That will get you the behavior you desire.