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

JQ 1.5.3使用--arg选项管道输出时打印帮助信息问题求助

解决JQ 1.5.3中--arg与管道结合时输出帮助信息的问题

我来帮你搞定这个jq的问题!你遇到的核心问题是对--arg传入变量的引用方式错误,导致jq无法正确解析表达式,进而触发了帮助信息输出。

错误原因分析

你原来的命令里,虽然用--arg ZK="$ZK"把shell变量传入了jq,但在jq表达式中写的是contains("$ZK")——这里的"$ZK"是一个字符串字面量,而不是你通过--arg传入的变量。而且在jq的语法里,引用--arg的变量根本不需要加引号,错误的写法让jq误以为表达式有语法问题,所以直接输出了帮助信息。

另外,你用单引号包裹jq表达式的做法是对的(能避免shell提前解析$ZK),但错误的变量引用还是导致了问题。

修正后的命令

把表达式里的contains("$ZK")改成contains($ZK)即可,直接引用变量不需要加引号:

export ZK=x
echo '{"jvm":{"value":"x"}}' | jq -c --arg ZK="$ZK" 'select(.jvm.value | contains($ZK))' | tail -n 1

执行这个命令后,就能得到你预期的结果:

{"jvm":{"value":"x"}}

额外提示

  • 对于jq 1.5.3版本,这种--arg变量的引用方式是完全兼容的,不用担心版本问题。
  • 记住一个小规则:用--arg传入的变量,在jq表达式里直接用$变量名调用就好,加引号只会把它当成普通字符串,反而会出问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:42:30