使 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日星期五