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

如何将含换行符的环境变量保存至.env文件?

环境变量转义保存到.env文件的解决方案

单个变量转义处理

如果要将单个带换行/回车的环境变量转成key=值\n转义的格式,可直接用printf配合sed完成:

# 示例:处理MY_VAR并写入文件
echo "MY_VAR=$(printf '%s' "$MY_VAR" | sed -e 's/\\/\\\\/g' -e 's/\n/\\n/g' -e 's/\r/\\r/g')" >> variables.env

这段命令会把变量值中的实际换行替换为\n,回车替换为\r,同时转义原有的反斜杠避免冲突。

批量处理所有环境变量(解决\r字符问题)

你的原脚本未处理\r字符,且通过tr -d '\n'删除换行再手动添加转义的方式逻辑冗余。以下是改进后的批量处理脚本:

# 先清空目标文件(避免重复写入)
> variables.env

# 用env -0以null分隔输出所有环境变量,避免换行干扰遍历
while IFS='=' read -r -d '' key value; do
    # 转义特殊字符:反斜杠→\\,换行→\n,回车→\r
    escaped_value=$(printf '%s' "$value" | sed -e 's/\\/\\\\/g' -e 's/\n/\\n/g' -e 's/\r/\\r/g')
    # 写入.env文件
    echo "$key=$escaped_value" >> variables.env
done < <(env -0)

脚本说明:

  • env -0:让env命令用null字符分隔每个环境变量条目,确保包含换行/回车的变量能被完整读取。
  • IFS='=' read -r -d '' key value:以=为分隔符拆分变量名和值,-d ''表示以null字符作为行结束符,-r避免读取时转义反斜杠。
  • sed命令:依次处理反斜杠、换行、回车的转义,保证输出格式符合.env文件的转义规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:34:56