1

我正在尝试使用 JQ 解析我的 curl 输出并检查退出代码,因此当我的 curl 输出为空时,JQ 返回 0 退出代码。

例如:

$ echo "" | jq '.key'
$ echo $?
0

如何使它返回 1 或一些非零值?

4

2 回答 2

2

您应该在命令行上使用inputwith -n/ 。--null-input这样,如果 JQ 的输入为空,JQ 将失败。

$ echo | jq -n 'input.key'
jq: error (at <stdin>:1): break
$ echo $?
5
$ jq -n '{key: 1}' | jq -n 'input.key'
1
$ echo $?
0
于 2021-03-04T05:23:54.783 回答
2

如果要在输入为空时指定返回码,可以使用halt_error/1,如下所示:

$ echo "" | jq -n 'try input.key catch halt_error(9)' 2> /dev/null
$ echo $?
9
于 2021-03-04T06:50:58.980 回答