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
相关产品推荐
相关产品推荐

