有没有更好的方法将字符串输出从 jq 传递到 bash?

Is there a better way to pass string output from jq to bash?

我刚刚发现 jq 并且非常喜欢它。我发现自己经常做的一件事是:

result=$(jq --raw-output '.some | .filters // ""')
if [[ $result ]]; then
    foo
else
    bar
fi

空字符串的默认设置似乎比 bash "truthiness" 更好用if [[ $result != "null" ]],原始输出通常是将结果字符串存储在变量中所必需的。我的问题是,我在脚本中如此一致地使用这两个调整,是否有更好的方法来实现相同的功能?或者能够设置几个环境变量来在脚本运行期间控制此行为是否有意义(作为对 jq 的可能增强)?

您可以使用 -e 标志,如果最后的输出值既不是 false 也不是 null 那么你的逻辑可能会变成:

result=$(jq -e -r '.some | .filters') && foo || bar