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

4

我刚刚发现了jq,非常喜欢它。但是我发现自己经常做这样的事情:

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

默认为空字符串好像比使用 if [[ $result != "null" ]] 更符合bash的“真实性”,而原始输出通常是必要的,只存储结果字符串到一个变量中。我的问题是,我在脚本中一直使用这两个调整,有没有更好的方法来实现相同的功能?或者说(作为 jq 的可能增强),能否设置一些环境变量来控制脚本的持续时间内此行为?

1个回答

6
您可以使用-e标志,它会让jq在最后一个输出值既不是false也不是null时返回退出代码0,因此您的逻辑可能变为:
result=$(jq -e -r '.some | .filters') && foo || bar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接