You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Groovy脚本中Shell变量无法存储值的问题求助

Jenkins流水线Shell变量为空的原因及解决

你的问题出在Shell变量赋值的语法错误上:在Bash中,变量赋值时,变量名与等号之间、等号与右侧表达式之间都不能有空格。

你写的代码里:

currentYear = `date +"%Y"`

会被Bash错误解析为:执行currentYear命令,将=和date +"%Y"的输出作为命令参数,而不是给currentYear变量赋值。这就导致currentYear变量从未被正确赋值,自然是空值,echo命令也没有输出。

修正后的代码

把赋值语句的空格去掉,同时推荐使用更直观的$()代替反引号(反引号嵌套时容易出错,$()是更现代的写法):

pipeline {
    parameters {
       
    }

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

如果坚持用反引号,也要去掉空格:

currentYear=`date +"%Y"`

修正后,currentYear变量会被正确赋值为当前年份,echo就能正常输出,后续使用该变量也能获取到值。

内容的提问来源于stack exchange,提问作者Mayank Aggarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 18:55:01