I am trying to get the exit code of the last command chained with &&
and ||
correctly.
I encountered a strange behavior that I cannot explain. Please help.
This is my exit-code.sh
test script:
#!/bin/bash
echo "running exit-code with $1"
exit $1
This works as expected:
$ ./exit-code.sh 1 && ./exit-code.sh 2 && ./exit-code.sh 3 || echo last exit code: $?
running exit-code with 1
last command exit code: 1
The same with ()
to run it in a subshell:
$ (./exit-code.sh 1 && ./exit-code.sh 2 && ./exit-code.sh 3 || echo last exit code: $?)
running exit-code with 1
last exit code: 1
But:
$ /bin/bash -c "./exit-code.sh 1 && ./exit-code.sh 2 && ./exit-code.sh 3 || echo last exit code: $?"
running exit-code with 1
last exit code: 0
Why do I get exit code 0 here?