Jenkins:变量与字符串单行拼接异常,路径多行显示问题
解决Jenkinsfile变量拼接路径换行问题
问题原因
通过sh步骤执行shell命令并使用returnStdout: true获取结果时,返回的字符串末尾默认带有换行符。你代码中的VERSION、PROJECT、BASEPATH变量都包含换行,导致拼接路径时换行被保留,最终输出被拆分为多行。
解决方案
在将sh返回结果赋值给环境变量时,调用trim()方法去除字符串首尾的空白字符(包括换行符)。修改后的代码如下:
stage('Zip') { steps { script { env.VERSION = sh(script: 'grep -m 1 version_number ${WORKSPACE}/ComponentInfo.toml | tr -s \' \' | tr -d \'"\' | tr -d "\'" | cut -d\' \' -f3', returnStdout: true).trim() echo "Version: ${env.VERSION}" env.PROJECT = sh(script: 'echo "${WORKSPACE}"|rev|cut -d\'/\' -f1|cut -d\'@\' -f2|rev', returnStdout: true).trim() echo "Project: ${env.PROJECT}" env.BASEPATH = sh(script: 'echo ${WORKSPACE%/*}' , returnStdout: true).trim() env.ZIP_FILEPATH = "${env.BASEPATH}/${env.PROJECT}-${env.VERSION}-SNAPSHOT.zip" echo "Zip File Path: ${env.ZIP_FILEPATH}" } } }
说明
trim()方法会移除字符串开头和结尾的所有空白字符(空格、换行符、制表符等),确保变量内容仅保留有效文本。- 无论使用字符串插值(
"${var}")还是+拼接,只要变量本身不带换行符,就能生成连续的路径字符串。
内容的提问来源于stack exchange,提问作者aiman
相关产品推荐
相关产品推荐

