Не могли бы вы объяснить, если затем elif и еще синтаксис jq? - PullRequest
1 голос
/ 25 марта 2020

Я новичок на JQ. При изучении, если еще не конец синтаксиса руководства jq, я получил странный результат следующим образом:

$ echo '[0, 1, 2]' | jq 'if .[] == 0 then "zero" elif .[] == 1 then "one" else "many" end'
"zero"
"many"
"one"
"many"
"many"
"one"
"many"

Кто-нибудь объясняет приведенный выше результат?

Спасибо.

1 Ответ

1 голос
/ 25 марта 2020

Синтаксис if / then / else / end сам по себе прост, но когда вы встраиваете итераторы в подвыражения, вы получаете «комбинаторное» поведение, которое вы заметили.

Другими словами, каждое вхождение .[] расширяется независимо от других, когда оно встречается.

Возможно, вам будет легче понять, если вы начнете с одного итератора, например

echo '[0, 1, 2]' | 
  jq '.[] | if . == 0 then "zero" elif . == 1 then "one" else "many" end'
...