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

如何在curl请求中让Bash动态变量生效?转义字符失效求助

解决curl请求中Bash变量无法注入JSON的问题

你的问题核心是单引号包裹的字符串中Bash变量不会被解析:原代码里-d参数用单引号括住了整个JSON,导致$prompt被当作普通字符串传给API,而非替换成变量的实际值。

以下是两种可行的解决方案:

方法1:替换引号并转义JSON内部双引号

把外层单引号改成双引号,同时给JSON里的双引号加上反斜杠转义,既让Bash能解析变量,又保证JSON格式合法:

output=$(curl https://api.openai.com/v1/images/generations \
      -H 'Content-Type: application/json' \
      -H "Authorization: Bearer $OPENAI_API_KEY" \
      -d "{
        \"prompt\": \"$prompt\",
        \"n\": 1,
        \"size\": \"1024x1024\"
      }")

方法2:用jq构造合法JSON(推荐)

如果$prompt包含特殊字符(比如双引号、换行、反斜杠),手动转义容易出错,建议用jq工具自动处理JSON转义:

output=$(curl https://api.openai.com/v1/images/generations \
      -H 'Content-Type: application/json' \
      -H "Authorization: Bearer $OPENAI_API_KEY" \
      -d "$(jq -n --arg p "$prompt" '{prompt: $p, n: 1, size: "1024x1024"}')")

jq的--arg参数会把Bash变量$prompt安全传入JSON,自动处理所有需要转义的字符,彻底避免格式错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:30:39