How to use $? and test to check function?
There's a simpler way of what you're doing. If you use set -x
, the script will automatically echo each line before it's executed.
Also, as soon as you execute another command, $?
is replaced with the exit code of that command.
You'll have to back it up to a variable if you're going to be doing anything with it other than a quick test-and-forget. The [
is actually a program that has its own exit code.
For example:
set -x # make sure the command echos
execute some command...
result="$?"
set +x # undo command echoing
if [ "$result" -ne 0 ]; then
echo "Your command exited with non-zero status $result"
fi
Looks to me like the command test "$?" != "0"
ends up setting $? to 1. The value $? gets used in the arguments to test
. test
sets $? to a non-zero value because "0" is lexically equal to "0". The "!=" makes test
return non-zero.