Wednesday, November 14, 2012

ReturnCode in unix

Shell Command Exit Status

The return value of a command is its exit status, or 128 + N if the command is terminated by signal N. Exit status is used to check the result (success/failure) of the execution of the command. If the exit status is zero, then the command is success. If the command is failed the exit status will be non-zero.

Exit Value Exit Status
0 (Zero) Success
Non-zero Failure
2 Incorrect usage
127 Command Not found
126 Not an executable
$? Shell Variable

The shell variable name $? is a special built-in variable which has the exit status of the last command executed.

After the shell function execution, $? returns the exit status of the last command executed in a function.
After the shell script execution, $? returns the exit status of the last command executed in the script.
Sample Shell Script that Explains Shell-Command Exit Status

The following shell-script shows examples of various shell-command exit status.

$ cat
#! /bin/bash

echo -e "Successful execution"
echo -e "====================="
echo "hello world"
# Exit status returns 0, because the above command is a success.
echo "Exit status" $?

echo -e "Incorrect usage"
echo -e "====================="
ls --option
# Incorrect usage, so exit status will be 2.
echo "Exit status" $?

echo -e "Command Not found"
echo -e "====================="
# Exit status returns 127, because bashscript command not found
echo "Exit status" $?

echo -e "Command is not an executable"
echo -e "============================="
ls -l
# Exit status returns 126, because its not an executable.
echo "Exit status" $?
Now, execute the above to see the various exit statues given by the sample shell script.

$ bash
Successful execution
hello world
Exit status 0
Incorrect usage
ls: unrecognized option `--option'
Try `ls --help' for more information.
Exit status 2
Command Not found
===================== line 15: bashscript: command not found
Exit status 127
Command is not an executable
-rw-r--r-- 1 root root 659 Mar  9 13:36 line 21: ./ Permission denied
Exit status 126

No comments:

Post a Comment