首页 > 解决方案 > 如何将 groovy 变量传递给 Jenkinsfile 中的 shell 脚本?

问题描述

在脚本部分下的 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]}" ')
         }
}

标签: shelljenkinsgroovyjenkins-pipeline

解决方案


您必须使用正确的字符串插值"${variable}"来访问变量的值。

sh(returnStdout: true, script: 'ssh user1@192.168.1.12 echo deleting "${prdirectory_lists[k]}" ')

Jenkins 官方文档有一些很好的例子:字符串插值


推荐阅读