Menurut manual jq (Ketentuan dan Perbandingan > jika-maka-lain):

if A then B end sama dengan if A then B else . end. Itu adalah cabang lain adalah opsional, dan jika tidak ada sama dengan ..

Hal yang sama didukung oleh jawaban yang diterima untuk pertanyaan Stack Overflow ini: JSON JQ jika tanpa yang lain

Jadi mengapa pernyataan if A then B end ini menyebabkan kesalahan penguraian?

$ jq --version
jq-1.6
$ echo 2 | jq 'if . == 0 then "zero" end'
jq: error: syntax error, unexpected end (Unix shell quoting issues?) at <top-level>, line 1:
if . == 0 then "zero" end                      
jq: error: Possibly unterminated 'if' statement at <top-level>, line 1:
if . == 0 then "zero" end
jq: 2 compile errors
$ echo 0 | jq 'if . == 0 then "zero" end'
jq: error: syntax error, unexpected end (Unix shell quoting issues?) at <top-level>, line 1:
if . == 0 then "zero" end                      
jq: error: Possibly unterminated 'if' statement at <top-level>, line 1:
if . == 0 then "zero" end
jq: 2 compile errors

Apa yang saya pahami sebagai bentuk pernyataan setara if A then B else . end tampaknya berhasil:

$ echo 2 | jq 'if . == 0 then "zero" else . end'
2
$ echo 0 | jq 'if . == 0 then "zero" else . end'
"zero"
2
StoneThrow 4 Maret 2020, 04:05

1 menjawab

Jawaban Terbaik

Saya pikir Anda sedang melihat manual untuk versi pengembangan jq, bukan daripada manual untuk jq versi 1.6.

4
user197693 4 Maret 2020, 01:55