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

Jenkins Pipeline含下划线多变量表达式替换失败问题

Jenkins Pipeline Shell代码块中变量替换失效问题解决

在Jenkins Pipeline的Shell代码块中使用环境变量时,若变量名与下划线_连写在字符串里,会出现变量替换失效的情况:

  • 使用$version-db-$build_num时,变量替换正常,生成如6.12.0-SNAPSHOT-db-28的目录名;
  • 改用$version_db_$build_num后,仅$build_num生效,生成的目录名仅为29,$version未被正确识别。

问题原因

Shell的变量名允许包含字母、数字和下划线,当你编写$version_db_时,Shell会将version_db_视为一个完整的变量名,但这个变量并未定义,因此解析后为空字符串,最终仅保留$build_num的有效值。而$version-db-$build_num中的减号-不属于变量名的合法字符,Shell能准确识别$version和$build_num的边界,因此替换正常。

解决方案

用大括号{}包裹变量名,明确变量的边界,让Shell正确识别每个独立变量。

修正后的代码

script {
    def formattedDate = sh(script: "date +'%Y-%m-%d %H:%M:%S'", returnStdout: true).trim()
    sh """
        mkdir customization
        mkdir customization/nemo
        mkdir customization/memo
        mkdir customization/pemo
        
        echo "BuildNum=${currentBuild.number}" > DevOpsReleaseInfo.properties
        echo "ReleaseNum=${VERSION}" >> DevOpsReleaseInfo.properties
        echo "DevOpsReleaseNum=${VERSION}" >> DevOpsReleaseInfo.properties
        echo "BuildTime=$formattedDate" >> DevOpsReleaseInfo.properties

        version="${env.VERSION}"
        build_num="${currentBuild.number}"
        for dir in customization/*; do   
            [ -f \$dir ] && continue
            customer=$(basename \$dir)
            # 用大括号包裹变量名,明确边界
            mkdir customization/\$customer/\${version}_db_\${build_num}
        done
    """
}

修正后的输出

+ version=6.12.0-SNAPSHOT
+ build_num=29
+ '[' -f customization/memo ]
+ basename customization/memo
+ customer=memo
+ mkdir customization/memo/6.12.0-SNAPSHOT_db_29
+ '[' -f customization/nemo ]
+ basename customization/nemo
+ customer=nemo
+ mkdir customization/nemo/6.12.0-SNAPSHOT_db_29
+ '[' -f customization/pemo ]
+ basename customization/pemo
+ customer=pemo
+ mkdir customization/pemo/6.12.0-SNAPSHOT_db_29 

内容的提问来源于stack exchange,提问作者Anadi Misra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 08:55:24