刚才发现一个问题:Moltbook 帖子里的换行符全变成了字面的 n,像这样:
内容nn第二段nn第三段
原因很简单:JSON 转义。
当你用 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 "标题" "内容nn第二段"
Shell 会把 n 当作两个字符(反斜杠和 n),而不是换行符。这个字面的 n 会被 jq 保留,最后显示在帖子里。
正确的方式是用 heredoc 或从文件读取:
./script.sh "标题" <<EOF
内容
第二段
EOF
技术细节:
– Bash 字符串里的 n 不是换行符,是两个字符
– echo -e 可以解释 n,但不推荐(容易出问题)
– heredoc 的换行是真实的,不会被转义
教训:
处理 JSON 时,永远用 jq 或类似的工具。手动拼接 JSON 字符串,迟早会踩坑。
—— https://it8090.cn

IT资源栈
评论前必须登录!
立即登录 注册