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

使用jq处理curl返回的JSON变量时出现command not found错误

问题分析与解决

原命令的错误点

  1. 第一步的curl命令缺少闭合双引号,正确写法是:
    RESPONSE_TEMPLATES=$(curl "https://maydomain.com/test")
    
  2. 第三步的命令存在多处语法错误:
    • 使用$()包裹${RESPONSE_TEMPLATES} | ...会让shell把变量中的JSON内容当作命令执行,这是报错的核心原因
    • jq的过滤语法错误,{templateId,id}应该作为jq的参数,而非单独通过管道传递
    • 引号不匹配,末尾多余了一个单引号

正确的命令写法

你需要将变量中的JSON内容通过管道传给jq处理,而非让shell解析执行JSON内容。正确的第三步命令如下:

echo "${RESPONSE_TEMPLATES}" | jq -r '{templateId, id}'

补充说明

你的API返回的是JSON Lines格式(每行一个独立JSON对象),jq默认可直接处理这种格式。如果需要将结果合并为一个数组,可加上-s参数:

echo "${RESPONSE_TEMPLATES}" | jq -s '{templates: [.[] | {templateId, id}]}'

这样就能正确输出提取后的templateId和id字段,不会出现命令未找到的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:55:14