How to set variables in a multi-line shell script within Jenkins Groovy?

71,969

Solution 1

You need to change to triple single quotes ''' or escape the dollar \$

Then you'll skip the groovy templating which is what's giving you this issue

Solution 2

I'm just putting a '\' on the end of line

sh script: """\
  foo='bar' \
  echo $foo \
""", returnStdout: true

This statement works on my script.

Share:
71,969
Fo.
Author by

Fo.

Updated on July 08, 2022

Comments

  • Fo.
    Fo. almost 2 years

    Suppose I have a Groovy script in Jenkins that contains a multi-line shell script. How can I set and use a variable within that script? The normal way produces an error:

    sh """
        foo='bar'
        echo $foo
    """
    

    Caught: groovy.lang.MissingPropertyException: No such property: foo for class: groovy.lang.Binding