JQ - значение фильтра с пробелом - PullRequest
0 голосов
/ 04 мая 2020

Я хочу выбрать значение и отфильтровать его. Но у него есть место. И я пытаюсь сделать это, используя для l oop. Но он не возвращает никакого вывода при использовании 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'

1 Ответ

1 голос
/ 04 мая 2020

Объявите 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
...