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

如何在curl的--data参数中动态注入变量替换ABC123?

替换curl请求中--data参数里的固定值为自定义变量

以下是几种可行的实现方式,适配不同场景:

直接在shell中替换(bash/zsh适用)

先定义自定义变量,再调整--data内的引号拼接逻辑:

# 定义你的自定义变量
ENDPOINT_UID="XYZ789"

# 构造curl请求
curl -X POST [你的API地址] \
--data '{
    "collection": [
        "Library"
    ],
    "filter": "{\"target.endpointUID\":{\"$eq\": \"'"$ENDPOINT_UID"'\"}}",
    "skip": 0,
    "limit": 16
}'

核心是用'"$ENDPOINT_UID"'实现变量插入:外层单引号关闭当前字符串段,双引号让shell解析变量,再用单引号重新开启字符串,保证JSON结构的正确性。

使用Heredoc简化引号处理

Heredoc能让你更清晰地编写JSON内容,减少转义字符:

ENDPOINT_UID="XYZ789"

curl -X POST [你的API地址] \
--data @- <<EOF
{
    "collection": [
        "Library"
    ],
    "filter": "{\"target.endpointUID\":{\"$eq\": \"$ENDPOINT_UID\"}}",
    "skip": 0,
    "limit": 16
}
EOF

@-表示从标准输入读取数据,Heredoc内的变量会被shell直接解析,只需保持filter字段内的JSON转义正确即可。

用jq生成JSON(推荐,避免转义错误)

如果经常需要动态生成这类JSON,用jq工具处理变量替换更可靠:

ENDPOINT_UID="XYZ789"

# 用jq构造符合要求的JSON数据
DATA=$(jq -n --arg uid "$ENDPOINT_UID" '{
    collection: ["Library"],
    filter: "{\"target.endpointUID\":{\"$eq\": \"\($uid)\"}}",
    skip: 0,
    limit: 16
}')

# 发起请求
curl -X POST [你的API地址] --data "$DATA"

jq会自动处理字符串拼接和转义,避免手动处理引号时容易出现的语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 22:40:07