Jenkinsfile文件名拼接失败求助:无法正确添加.bin后缀
解决Jenkins版本号拼接.bin时换行的问题
问题根源是version.txt中的版本号末尾带有换行符(\n)或回车符(\r),读取变量时被一并带入,导致拼接后.bin被分隔到下一行。以下是几种直接有效的解决方法:
Shell脚本场景(Jenkins sh步骤中)
- 用
tr命令删除所有换行/回车符:VERSION=$(tr -d '\n\r' < app/source/version.txt) BIN_FILE="${VERSION}.bin" echo $BIN_FILE - 用
sed清理空行和末尾回车:VERSION=$(sed -e '/^\s*$/d' -e 's/\r$//' app/source/version.txt) BIN_FILE="${VERSION}.bin" - 用
awk提取第一行并去除换行/回车:VERSION=$(awk 'NR==1 {gsub(/\r|\n/,""); print}' app/source/version.txt) BIN_FILE="${VERSION}.bin"
Jenkins Pipeline Groovy场景
利用trim()方法直接去除字符串首尾的空白字符(包括换行、回车):
stage('upload binaries') { steps { script { def version = readFile('app/source/version.txt').trim() def binFileName = "${version}.bin" echo "生成的文件名:${binFileName}" // 后续上传逻辑 } } }
验证方法
如果不确定问题是否由换行符导致,可以打印变量的ASCII字符确认:
echo -n "$VERSION" | od -c
输出中如果出现\n或\r,说明确实存在多余的换行/回车符。
内容的提问来源于stack exchange,提问作者bas
相关产品推荐
相关产品推荐

