]> granicus.if.org Git - jq/commit
exit with non-zero code on runtime exceptions 720/head
authorAssaf Gordon <assafgordon@gmail.com>
Fri, 6 Mar 2015 23:42:16 +0000 (18:42 -0500)
committerAssaf Gordon <assafgordon@gmail.com>
Fri, 6 Mar 2015 23:50:58 +0000 (18:50 -0500)
commit4104c4fa1cef1fc422597177058c8eb5a6b3d4e0
treeeb9acec354d47b9fe54ceaf75ddff41be055d26b
parent33a85679b9f79aa9f002687e2ead8c0cdc4d51cd
exit with non-zero code on runtime exceptions

With this change, runtime exceptions are propagated to non-zero exit
code of 'jq', allow better scripting and automation. The new exit code
value is 5.

This allows using the shell's and/or operations ('&&' and '||') to
detect input runtime exceptions.

Before:
runtime exceptions are printed to STDERR, but not reported as non-zero exit-code:
    $ echo '"hello"' | jq '.|tonumber' ; echo $?
    jq: error: Invalid numeric literal at EOF at line 1, column 5 (while parsing 'hello')
    0

After:
    $ echo '"hello"' | ./jq '.|tonumber' ;  echo $?
    jq: error: Invalid numeric literal at EOF at line 1, column 5 (while parsing 'hello')
    5

Note that there's a subtle interplay when using "-e" option.
The value of the non-zero exit code changes from 4 to 5, but it still
indicates a 'failure' or non-true value.

Before:
    $ echo '"hello"' | jq -e '.|tonumber' ;  echo $?
    jq: error: Invalid numeric literal at EOF at line 1, column 5 (while parsing 'hello')
    4

After:
    $ echo '"hello"' | ./jq -e '.|tonumber' ;  echo $?
    jq: error: Invalid numeric literal at EOF at line 1, column 5 (while parsing 'hello')
    5
main.c