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

Github Actions拼接环境变量出现冗余空格的问题排查与解决

问题原因与修复方案

冗余空格产生的原因

  1. Base64工具的默认换行行为:GNU base64工具遵循RFC 4648规范,默认会在编码后的每76个字符后插入换行符,导致生成的AUTH_TOKEN变量包含换行。
  2. Shell变量展开的空白符处理:使用echo $AUTH_TOKEN写入文件时,未给变量添加双引号,Shell会将变量中的换行符、制表符等空白符统一替换为单个空格,最终写入文件的Base64字符串就出现了冗余空格。

修复方法

方法1:编码时直接禁用换行(推荐)

在base64命令中添加-w 0参数,强制输出无换行的Base64字符串:

run: |
  export "AUTH_TOKEN=$(echo -n "${MONGODB_USERNAME}:${MONGODB_PASSWORD}" | base64 -w 0)"
  echo "$AUTH_TOKEN" >> temp
  cat temp

注:-w 0是GNU base64的参数,Ubuntu等基于Debian的系统默认支持。

方法2:写入文件时保留原始格式

如果需要保留Base64的换行格式(部分场景要求),给echo的变量添加双引号,避免Shell替换空白符:

run: |
  export "AUTH_TOKEN=$(echo -n "${MONGODB_USERNAME}:${MONGODB_PASSWORD}" | base64)"
  echo "$AUTH_TOKEN" >> temp
  cat temp

若后续需要无换行的字符串,可额外处理:

cat temp | tr -d '\n' > temp_no_newline

另外,解码结果末尾的%符号并非解码内容本身,是Zsh在输出无换行的内容后显示的提示符,修复空格后该现象会自动消失。

内容的提问来源于stack exchange,提问作者mykhailo.vz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:17:55