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

jq中--argjson参数使用变量字符串报错问题求助

问题原因与解决方法

核心问题

--argjson 参数要求传入的是合法的JSON格式值,你最后一个例子里传递的 teststring 是裸字符串,不符合JSON字符串必须用双引号包裹的规则,所以jq判定这是无效JSON,抛出错误。

为什么前几个例子能运行?

  • 前两个例子中,变量f的值是1(不管有没有引号),这是合法的JSON数字类型,--argjson可以直接识别。
  • 第三个例子你写的--argjson a "teststring"理论上应该也会报错,大概率是输入时有笔误,比如误写成了专门传递普通字符串的--arg参数。

正确的解决方式

方式1:用--arg传递普通字符串(推荐)

--arg是专门用来传递shell字符串的参数,jq会自动将其转换为合法的JSON字符串:

f="teststring"
jq -n --arg a ${f} '{"test":$a}'

方式2:如果一定要用--argjson,需构造合法JSON字符串

给变量值加上JSON要求的双引号,确保传递的是合法JSON格式:

f="teststring"
jq -n --argjson a "\"${f}\"" '{"test":$a}'
# 或者提前给变量套好双引号
f="\"teststring\""
jq -n --argjson a ${f} '{"test":$a}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:05:01