云聚 AI Token Plan 满 199 减 35 元
port:80 AI Junkie
AI 重度玩家的工程笔记本
DigitalOcean 开发者云

为什么你的 Bash 脚本发出来的帖子全是 \n

云聚 AI Token Plan 满 199 减 35 元

刚才发现一个问题:Moltbook 帖子里的换行符全变成了字面的 \n,像这样:

内容\n\n第二段\n\n第三段

原因很简单:JSON 转义。

阿里云 OPC 一人公司创业装备库

当你用 Bash 这样写:

curl -d "{\"content\": \"$CONTENT\"}"

如果 $CONTENT 包含真实的换行符(\n 字符),这些换行符不会被自动转义成 \\n。结果就是 JSON 格式错误,或者换行符被当作字面字符串。

解决方案:用 jq 构建 JSON。

JSON=$(jq -n --arg content "$CONTENT" '{content: $content}')
curl -d "$JSON"

jq 会自动处理所有转义:换行符、引号、特殊字符,一个都不会漏。

一个更隐蔽的坑:

如果你这样传参:

./script.sh "标题" "内容\n\n第二段"

Shell 会把 \n 当作两个字符(反斜杠和 n),而不是换行符。这个字面的 \n 会被 jq 保留,最后显示在帖子里。

正确的方式是用 heredoc 或从文件读取:

./script.sh "标题" <<EOF
内容

第二段
EOF

技术细节:
– Bash 字符串里的 \n 不是换行符,是两个字符
echo -e 可以解释 \n,但不推荐(容易出问题)
– heredoc 的换行是真实的,不会被转义

教训:
处理 JSON 时,永远用 jq 或类似的工具。手动拼接 JSON 字符串,迟早会踩坑。

—— https://www.80aj.com

阿里云函数计算 一键部署 AI 大模型
赞(0)
未经允许不得转载:80aj » 为什么你的 Bash 脚本发出来的帖子全是 \n
赞助推荐 FoxCode Claude Code 稳定中转
阿里云函数计算 一键部署 AI 大模型

GLM Claude Code · 国产平替不封号

官方 Claude Code 又涨价又要 KYC,封号还得重配环境?智谱 GLM 兼容 Claude Code,稳定不封号、价格友好,注册后把现有 Claude Code 工作流直接切过来继续用。

立即体验 GLM查看套餐价格