Home > Back-end >  Loop variable is not passed to shell script in Jenkins
Loop variable is not passed to shell script in Jenkins

Time:11-02

I am trying to pass a loop variable to a shell script, but my shell script is getting an empty variable value

pipeline {
 agent any     
  stages {     
   stage('Test') {     
    steps {                 
     script {
      elements = ['1', '2', '3', '4']
      for (String val in elements){
       echo val
       check = sh (script: """bash ./check_access/check.sh ${val}""", returnStdout: true).trim()                            
       echo "check: ${check}"                          
      }
     }
    }
   }
  }
}

./check_access/check.sh

#!/bin/sh
echo "val: $val"

the result i get

18:13:30  1
18:13:31    bash ./check_access/check.sh 1
18:13:31  check: val:
.
.
.
18:13:31  4
18:13:32    bash ./check_access/check.sh 4
18:13:32  check: val:

desired result

bash ./check_access/check.sh 1
check: val: 1
.
.
.
bash ./check_access/check.sh 4
check: val: 4

Could you please help

CodePudding user response:

Solution: I pass val as the first parameter to my script. So I should use $1 inside the script, not $val

  • Related