无法在 Jenkins 管道中使用 bash 进行循环

无法在 Jenkins 管道中使用 bash 进行循环

以下是我的代码

     stage ('Connect to cluster (update kubeconfig)') {
        steps {
            script {
                dir("${env.WORKSPACE}/gke-infra-creation") {
                def jsonObj;
                jsonObj = readJSON file: 'parameters.json'

                sh "gcloud container clusters get-credentials ${jsonObj.cluster_name} --zone ${jsonObj.zone} --project ${jsonObj.project}"
            
                sh "for \i in ${jsonObj.ns}; do kubectl create namespace $i}; done"
           
                sh "kubectl get nodes"
                
                }                
            }
        }
    }

失败并出现以下错误

  org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
  WorkflowScript: 53: unexpected char: '\' @ line 53, column 29.
                   sh "for \i in ${jsonObj.ns}; do kubectl create namespace $i}; done"
                           ^

  1 error

  at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:309)

如果我尝试使用 $i,则会失败并出现以下错误

 hudson.remoting.ProxyException: groovy.lang.MissingPropertyException: No such property: i for class: WorkflowScript

有任何解决此问题的建议吗?

答案1

  • 第一个i没有任何特殊字符,因此根本不需要转义。
  • 转义文字的正确方法$\$
  • 后面有一个多余的括号$i

尝试:

sh "for i in ${jsonObj.ns}; do kubectl create namespace \$i; done"

相关内容