使用参数过滤数据

时间:2015-06-11 00:36:43

标签: json bash jq

我有这个命令正在运作..

cat  ~/Desktop/results.json |  jq '.[] | .environmentStatuses[].deploymentResult | select(.key.entityKey.key=="39583746-39747586") | .lifeCycleState '

我想将实体键作为变量传递,尝试下面的那些,但似乎都没有 -

enkey="39583746-39747586"

cat  ~/Desktop/results.json |  jq '.[] | .environmentStatuses[].deploymentResult | select(.key.entityKey.key=="""${enkey}""") | .lifeCycleState '

cat  ~/Desktop/results.json |  jq '.[] | .environmentStatuses[].deploymentResult | select(.key.entityKey.key=="${enkey}") | .lifeCycleState '

2 个答案:

答案 0 :(得分:3)

尝试在过滤器中使用额外参数时,请使用--arg选项将其传入。不要依赖shell将其插入过滤器字符串中,将其保持分开。

jq --arg key "$enkey" '.[] |
  .environmentStatuses[].deploymentResult |
  select(.key.entityKey.key == $key) |
  .lifeCycleState' ~/Desktop/results.json

答案 1 :(得分:0)

这对我有用:

  jq '.[] | .environmentStatuses[].deploymentResult |
  select(.key.entityKey.key == "'$key'") |
  .lifeCycleState' ~/Desktop/results.json 

--arg无法正常工作......