Библиотека сайта rus-linux.net
... there are dark corners in the Bourne shell, and people use all of them.
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 can 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.
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
command may be used to deliver an
exit status to the shell
must be an integer in the 0 -
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).
The equivalent of a bare exit is exit $? or even just omitting 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 Bash's way of giving
functions a "return value."
Following the execution of a pipe, a
gives the exit status of the last command executed.
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.
Example 6-1. exit / exit status
#!/bin/bash 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. echo exit 113 # Will return 113 to shell. # To verify this, type "echo $?" after script terminates. # By convention, an 'exit 0' indicates success, #+ while a non-zero exit value means an error or anomalous condition.
Certain exit status codes have reserved meanings and should not be user-specified in a script.
In those instances when there is no return terminating the function.