[英]How to pass groovy variable to shell script in Jenkinsfile?
在脚本部分下的 Jenkinsfile 中,我使用以下代码返回类似于以下内容的输出。
deleting 1
deleting 2
deleting 3
我尝试了以下脚本,但似乎不起作用。
script {
prdirectory_lists = ['1','2','3']
def size3 = prdirectory_lists.size()
for(k=0;k<size3;k++){
sh(returnStdout: true, script: 'ssh user1@192.168.1.12 echo deleting prdirectory_lists[k] ')
//sh(returnStdout: true, script: 'ssh user1@192.168.1.12 echo deleting ${prdirectory_lists[k]} ')
//sh(returnStdout: true, script: 'ssh user1@192.168.1.12 echo "deleting ${prdirectory_lists[k]}" ')
}
}
尝试这个:
sh returnStdout: true,
script: """ssh user1@192.168.1.12 echo "deleting ${prdirectory_lists[k]}" """
您必须使用正确的字符串插值"${variable}"
来访问变量的值。
sh(returnStdout: true, script: 'ssh user1@192.168.1.12 echo deleting "${prdirectory_lists[k]}" ')
Jenkins 官方文档为此提供了一些很好的示例: 字符串插值
您总是使用没有字符串插值功能的单引号字符串
以下应该工作:
def list = ['1','2','3']
list.each {item ->
sh(returnStdout: true, script: "ssh user1@192.168.1.12 echo deleting $item")
}
总的来说,Groovy 中有三种类型的字符串:
我相信在这种情况下,双引号字符串最适合您
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.