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

Bash脚本单字输入正常,多字输入报JSON/cURL错误求助

问题解决方法

问题根源

多字内容里的空格、特殊字符会被Shell拆分,破坏JSON结构;同时未正确转义内容中的特殊字符,导致cURL解析JSON时出现语法错误。

具体修复步骤

  1. 用工具生成标准JSON
    避免手动拼接JSON字符串,用jq或printf自动处理特殊字符转义:

    • 用jq(推荐,需提前安装):
      RELEASE_NOTE=$(jq -n --arg note "$INPUT" '{content: $note}')
      
    • 用printf(无需额外工具):
      RELEASE_NOTE=$(printf '{"content": "%q"}' "$INPUT")
      
  2. 正确引用变量并指定Content-Type
    在cURL的--form参数中,用双引号包裹JSON变量,并明确标注字段的Content-Type为application/json,避免API解析错误:

    curl -X POST \
      --form "releaseNote=$RELEASE_NOTE;type=application/json" \
      --form "file=@/path/to/your/file" \
      https://your-api-endpoint.com
    
  3. 避免Shell变量拆分
    所有包含空格或特殊字符的变量,传递给cURL时必须用双引号包裹,防止Shell将内容拆分为多个参数。

完整示例脚本

#!/bin/bash
read -p "输入发布说明: " INPUT

# 用jq生成标准JSON
RELEASE_NOTE=$(jq -n --arg note "$INPUT" '{content: $note}')

# 发起请求
curl -X POST \
  --form "releaseNote=$RELEASE_NOTE;type=application/json" \
  --form "file=@test.txt" \
  https://your-api-endpoint.com

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 07:45:39