Jenkinsfile中的求值变量-单引号中的单引号

Jenkinsfile中的求值变量-单引号中的单引号,jenkins,jenkins-pipeline,sh,terraform,Jenkins,Jenkins Pipeline,Sh,Terraform,我正在Jenkins文件中执行以下操作: sh(''' terraform apply 'var some_list=["foo","bar"]' ''') 现在,我想将[“foo”,“bar”]放在一个变量中,并将其输入terraform,因此我: sh(''' export MYVAR=["foo","bar"] terraform apply 'var some_list=${MYVA

我正在Jenkins文件中执行以下操作:

sh('''
   terraform apply 'var some_list=["foo","bar"]'
   ''')
现在,我想将[“foo”,“bar”]放在一个变量中,并将其输入terraform,因此我:

sh('''
   export MYVAR=["foo","bar"]
   terraform apply 'var some_list=${MYVAR}'
   ''')
然而,这是行不通的${MYVAR}被解释为文字字符串,而不是作为变量计算

我可以这样做:

sh('''
   export MYVAR=["foo","bar"]
   terraform apply var some_list=${MYVAR}
   ''')
在本例中,${MYVAR}被正确地解释,但是Terraform无法将参数解释为列表,因此需要单引号

也许可以使用双引号代替,即
sh(“…”)
,并使用Groovy求值,但我还有几个其他变量,正好发生了相反的问题。我真正想要的是一种在单引号中使用单引号并仍然对变量求值的方法

有人知道我是如何做到这一点的吗

编辑:


顺便说一句,
terraformapply'varsomeu list=${MYVAR}
terraformapply'varsomeu list=${MYVAR}'
terraformapply'var someu list=${MYVAR}\
都给出了完全相同的结果。

因此,经过更多的尝试和错误,我终于发现这是可行的:

sh('''
   export MYVAR=["foo","bar"]
   terraform apply 'var some_list='${MYVAR}''
   ''')

i、 e.我必须关闭${MYVAR}之前的内部单引号,然后直接打开它们

根据您想要的解决方案,您是否尝试在${MYVAR}之前或之前使用反斜杠?是的,除非我做得不正确,否则它似乎没有效果