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?