Exit Status
The exit command may be used to terminate a script. It can also return a value, which is available to the script's parent process.
On this page
Every command returns an exit status (sometimes referred to as a return status or exit code). A successful command returns a 0
, while an unsuccessful one returns a non-zero value that usually may be interpreted as an error code. Well-behaved UNIX commands, programs, and utilities return a 0 exit code upon successful completion, though there are some exceptions.
Likewise, functions within a script and the script itself return an exit status. The last command executed in the function or script determines the exit status. Within a script, an exit nnn
command may be used to deliver an nnn
exit status to the shell (nnn
must be a decimal number in the 0 - 255 range).
When a script ends with an exit that has no parameter, the exit status of the script is the exit status of the last command executed in the script (previous to the exit).
$?
reads the exit status of the last command executed. After a function returns, $?
gives the exit status of the last command executed in the function. This is a way of giving functions a return value.
After a script terminates, a $?
from the command line gives the exit status of the script, that is, the last command executed in the script, which is, by convention, 0
on success or an integer in the range 1 - 255
on error.
Examples
echo hello
echo $? # Exit status 0 returned because command executed successfully.
lskdf # Unrecognized command.
echo $? # Non-zero exit status returned because command failed to execute.
Certain exit status codes have reserved meanings and should not be user-specified in a script.