jq - 使用 jq 专门处理空 JSON 数组
问题描述
我想要第一个状态为 0 的命令退出而不打印任何内容。第二条命令的输出和状态应该如图所示。有人可以告诉我如何修改jq_expr
以实现这一目标吗?-e
(应保留该选项。)
$ jq_expr='.value | .[] | [.x] | @tsv'
$ jq -e -r "$jq_expr" <<< '{"value": []}' || echo "$?" # I just want this one to exit with 0 instead of 4.
4
$ jq -e -r "$jq_expr" <<< '{"value": [{"x":42}]}' || echo "$?"
42
解决方案
[这是对原始问题的回应,其中 jq 的第一次调用被赋予了准 JSON 值:{"value": [{x:1}]}
.]
该表达式{"value": [{x:1}]}
不是有效的 JSON,因此如果它被视为有效 JSON,则抑制错误消息的唯一方法是将其重定向到/dev/null
. (jq 的异常处理机制不能用于捕获此类语法错误。)
有多种工具(包括 jq 本身)可以将此类准 JSON 字符串转换为 JSON,因此您可能想利用其中的一种。例如,考虑:
$ jq -nc -f <(echo '{"value": [{x:1}]}')
{"value":[{"x":1}]}
推荐阅读
- python - 如何在导航到之前修改链接 url
- java - 在创建新的 Java 对象实例时,在匿名代码块中初始化变量是否兼容?
- chef-infra - 这个厨师食谱代码是什么意思
- ms-access - 从 Access 列表框列中获取非重复值
- java - 卡夫卡一次又一次地读取一批消息
- javascript - JS:在 pdfMake 列中创建段落
- db2-400 - 查询 db2 中的所有空表
- android - 如何在 SQLite android 中手动执行检查点?
- django - django - 向用户银行账户转账的最佳方式
- android - Android - RecyclerView 滑动动画不会消失