我刚刚发现了jq而且非常喜欢它。有一点我发现自己做了很多事情,比如:
result=$(jq --raw-output '.some | .filters // ""')
if [[ $result ]]; then
foo
else
bar
fi
默认为空字符串似乎比bash“真实性”更好地播放if [[ $result != "null" ]]
,并且通常需要raw-output来将结果字符串存储在变量中。我的问题是,我在脚本中如此一致地使用这两个调整,是否有更好的方法来实现相同的功能?或者是否有意义(作为对jq的可能增强)能够在脚本的持续时间内设置几个env变量来控制这种行为?
答案 0 :(得分:6)
如果最后一个输出值不是-e
或jq
,您可以使用0
标记使false
返回退出代码null
,然后逻辑可能变成:
result=$(jq -e -r '.some | .filters') && foo || bar