使用 jq 进行条件输出

use*_*739 4 json exit-code jq

我有如下 JSON 输入。

  • {"value":{"error":"no such element","message":"no such element: xxx"}
  • {"value":null}

对于第二种情况,我想使用jqreturn 退出状态为 0(不打印任何内容),并打印no such element: xxx到 stderr 并为第一种情况返回退出状态 1。

我怎样才能实现这一目标jq

pea*_*eak 5

指定退出代码的一种方法是使用内置过滤器halt_error。为了满足我所理解的您的规格,您可以这样写:

 .value
 | if . then .error | halt_error(1)
   else null | halt_error(0)
   end
Run Code Online (Sandbox Code Playgroud)

有关详细信息并探索变体(例如添加“\n”),请参阅jq 手册。