Search code examples
linuxbashshelljenkinsgroovy

Run bash command on Jenkins pipeline


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.


Solution

  • 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.