test: unknown operator status

hi

I get test: unknown operator status

if [ $status = "A" ]
then
echo "OK."
return 0
else
echo "not ok" 2>&1
exit -1
fi

I tried to change "A" with 'A' --> same error

I tried to change
if [ "$status" = "A" ], I am getting:

-1: bad number

any idea?

exit number must be a decimal number in the 0 - 255 range

hi

what should i use then for an error exit code? I always used exit -1

thanks

Exit Codes With Special Meanings

Reserved Exit Codes

Exit Code Number Meaning Example Comments
1 - Catchall for general errors let "var1 = 1/0" Miscellaneous errors, such as "divide by zero" and other impermissible operations
2 - Misuse of shell builtins (according to Bash documentation) empty_function() {} Seldom seen, usually defaults to exit code 1
126 - Command invoked cannot execute Permission problem or command is not an executable
127 - "command not found" illegal_command Possible problem with $PATH or a typo
128 - Invalid argument to exit exit 3.14159 exit takes only integer args in the range 0 - 255 (see first footnote)
128+n - Fatal error signal "n" kill -9 $PPID of script $? returns 137 (128 + 9)
130 - Script terminated by Control-C Control-C is fatal error signal 2, (130 = 128 + 2, see above)
255* - Exit status out of range exit -1 exit takes only integer args in the range 0 - 255

According to the above table, exit codes 1 - 2, 126 - 165, and 255 have special meanings, and should therefore be avoided for user-specified exit parameters. Ending a script with exit 127 would certainly cause confusion when troubleshooting (is the error code a "command not found" or a user-defined one?). However, many scripts use an exit 1 as a general bailout-upon-error. Since exit code 1 signifies so many possible errors, it is not particularly useful in debugging.