Only 0 being true in shell is due to 0 being the "everything is fine" exitcode in UNIX.
Everything else signals some kind of error. Which exitcode correlates to which error depends AFAIK on the command. But you can make your tools scripting friendly by exiting w/ 1 on invalid input, 2 on invalid configuration and so on.
When you stick to values of 2^x you can even AND them and fill up all 8bits I think an exitcode can have! ;)