Run bash command on jenkins pipeline

Yago Azedias picture Yago Azedias · Jun 2, 2017 · Viewed 103.3k times · Source

Inside a groovy script (for a jenkins pipeline): How can I run a bash command instead of a sh command?

I have tried the following:

Call "#!/bin/bash" inside the sh call:

stage('Setting the variables values') {
    steps {
         sh '''
            #!/bin/bash
            echo "hello world"
         '''
    }
}

Replace the sh call with a bash call:

stage('Setting the variables values') {
    steps {
         bash '''
            #!/bin/bash
            echo "hello world"
         '''
    }
}

Additional Info:

My command is more complex than a echo hello world.

Answer

Jake picture Jake · Jul 19, 2017

The Groovy script you provided is formatting the first line as a blank line in the resultant script. The shebang, telling the script to run with /bin/bash instead of /bin/sh, needs to be on the first line of the file or it will be ignored.

So instead, you should format your Groovy like this:

stage('Setting the variables values') {
    steps {
         sh '''#!/bin/bash
                 echo "hello world" 
         '''
    }
}

And it will execute with /bin/bash.