Я использовал альтернативный оператор, //
:
(.someFlag // false) == false)
Таким образом, если .someFlag
не существует, он обрабатывается как ложное.
Полное выражение:
some_command | jq -r '.elements[] | select(.state=="LIVE" and .group == "some_text" and (.someFlag // false) == false)) | .name'
Из jq
документации:
Альтернативный оператор // :
Фильтр вида a // b
производиттот же результат, что и a
, если a дает результаты, отличные от false и null. В противном случае a // b
выдаст те же результаты, что и b
.
. Это полезно для предоставления значений по умолчанию: .foo // 1
будет иметь значение 1, если на входе нет элемента .foo
. Это похоже на то, как или иногда используется в Python (оператор jq или зарезервирован для строго булевых операций).