Этот ответ основан на текущем исходном коде jq
1.6 из https://github.com/stedolan/jq
Для --exit-status
(-e
) существует 6 возможных кодов выхода:
- 0: что-то выводит jq, и последняя строка не была ни ложной, ни нулевой
- 1: вывод последней строки был ложным или нулевым
- 2: проблема использования или системная ошибка
- 3: ошибка компиляции программы jq
- 4: jq вообще ничего не выводил
- 5: неизвестная (неожиданная) ошибка: любая ошибка, кроме 2 и 3
Без --exit-status
(-e
), 0 означает, что jq
запущен успешно. Кроме того, статусы выхода 1 и 4 исчезают, и вместо них возвращается 0.
Вот (Unix Bourne shell) несколько способов получить 1 в качестве значения выхода:
$ echo false | jq -e .
false
$ echo '{ "foo": false }' | jq -e .foo
false
$ echo null | jq -e .
null
$ echo '{ "foo": null }' | jq -e .foo
null
$ echo '{ }' | jq -e .foo
null
$ echo '{ "foo": false }' | jq -e '.bar?'
null
Вот как получить 4:
$ echo 'false' | jq -e '.foo?'
И (я уверен, вы хотите знать) вот один из способов получить 5:
$ echo false | jq .foo
jq: error (at <stdin>:1): Cannot index boolean with string "foo"