Jenkins groovy 脚本中 shell 脚本内的变量不存储值

问题描述 投票:0回答:1

我目前正在使用 Groovy 脚本配置 Jenkins 管道。

在 Groovy 脚本内部,在其中一个阶段,我正在执行 Shell 脚本,如下所示:

pipeline {
parameters {
   
}

agent {
    docker {
    
    }
}

stages {
    stage('abc') {
        steps {
            script {
                sh '''#!/bin/bash -x
                currentYear = `date +"%Y"`
                echo ${currentYear}
                '''
            }
        }
        
    }
}
}

日期计算工作正常。但是 echo 命令没有显示任何内容。任何进一步使用此变量都会产生空白。

任何人都可以帮我理解为什么这个变量没有任何值吗?

shell jenkins groovy jenkins-pipeline jenkins-groovy
1个回答
0
投票

sh
步骤方法的输入参数对于 shell 解释器在语法上无效。更新参数来解决问题会产生更好的结果:

sh '''currentYear=`date +"%Y"`
      echo ${currentYear}'''
// 2023

请注意,

currentYear
的作用域为
sh
步骤方法,因此您可能希望将其分配给 Groovy 变量,而不是管道重用。

© www.soinside.com 2019 - 2024. All rights reserved.