以下是我的代码
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"