使 jq 無匹配時返回空字符串,而非 null

當使用 jq 解析 JSON 而無匹配項時將會返回 null,而某些場景下,返回空字符串會更方便。
本頁內容

背景

最近利用 jq 寫了幾個 GitHub Actions,其輸出(outputs)只能作為字符串,而 "null" 字符串永遠為真,而這種場景下,jq 於無匹配時返回空字符串更方便。

解決方案

可以通過追加 // empty 註釋,以返回空字符串,而非 null

 1$ echo '{"foo":"bar"}' | jq '.foo'
 2"bar"
 3
 4$ echo '{"foo":"bar"}' | jq '.fizz'
 5null
 6
 7$ echo '{"foo":"bar"}' | jq '.fizz // empty'
 8
 9$ echo '{"foo":"bar"}' | jq '.foo // empty'
10"bar"
razonyang
2024年8月29日 星期四 2024年6月28日 星期五