JQ - 带空格的过滤值

问题描述 投票:0回答:1

我想选择一个值,然后过滤。但它有一个空格。我想用for循环来完成这个任务,但使用for循环时没有任何输出。for loop. 我甚至试过 --arg name "$i" 但这也不行。

值是 "虚拟组1","虚拟组2"。

group_list=("dummy group 1", "dummy group 2");

for i in "${group_list[@]//,/}"
do

echo $groupid_json | jq  -r '.result[] | select(.name == "$i") | .groupid'

done

但是什么都没有发生.这是我试图过滤的实际json输出。

[
  {
    "groupid": "92",
    "name": "dummy group 1"
  },
  {
    "groupid": "93",
    "name": "dummy group 2"
  }
]

如果我输入数值,它就会工作

echo $groupid_json | jq  -r '.result[] | select(.name == "dummy group 1") | .groupid'
json jq
1个回答
1
投票

声明 group_list 适当的,它会工作。

group_list=("dummy group 1" "dummy group 2")
for i in "${group_list[@]}"; do
  jq -r --arg name "$i" '.[] | select(.name == $name) .groupid' <<< $groupid_json
done
© www.soinside.com 2019 - 2024. All rights reserved.