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

如何在Makefile中保留\n将多行环境变量输出为单行JSON文件

问题描述

我将包含多行字符串的JSON对象存储为环境变量,并在Makefile中调用:

.env 文件内容

ENV_VAR = {"example": "multi\nline\n"}

Makefile 内容

include .env
export

job:
	echo ${ENV_VAR} > example.json

执行后生成的example.json是损坏的JSON,内容如下:

{"example": "multi
line
"}

使用printf命令也会出现同样问题。需要将该环境变量输出为单行的有效JSON,期望结果为:

{"example": "multi\nline\n"}

补充修正(第二次更新)

抱歉之前未区分Makefile变量与环境变量,且此前示例中的.env文件内容有误,实际使用的是:

ENV_VAR = '{"example": "multi\nline\n"}'

单引号的包裹至关重要(我原以为会被自动剥离)。

针对两种情况的解决方案:

  • 无单引号包裹时,使用@william purcell的方案即可解决:
printf '%s\n' '$(MAKE_VAR)' > example.json
  • 有单引号包裹时,最佳方案是按照@Barmar和@Christopher Wrogg的建议,在每个\n前添加额外的\,修改后的.env文件内容如下:
ENV_VAR = '{"example": "multi\\nline\\n"}'

这样输出时就能保留\n转义符,生成符合要求的单行JSON文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:43:21