Shell Scripting Exit Status Shell Scripting Return codes

In this Article we are going to see How an Shell commands exit with the status. Shell Scripting Exit Status / Shell Scripting Return codes are same. Exit codes are required to determine commands in scripts are run correctly. If any error there itself we can find reason.

Shell Scripting Exit Status / Shell Scripting return Codes

Every Command returns an exit status. Range of exit codes from 0 – 255

0 = Success. Other than 0 is error. To find out exact reason behind the every exit code make use of man pages or info to find meaning of exit status

Shell script exit status can be verified using special variable “$?” contains the return code of previously executed command

[ravi@ArkIT-Serv ~]$ ping 1923.6.3.2
ping: unknown host 1923.6.3.2
[ravi@ArkIT-Serv ~]$ echo $?

Based on command exit status we can make decisions to perform other tasks on shell scripts, example as mentioned below.

root@ArkIT-Serv:/scripts# cat
## Ping and know exit status of command
ping -c 1
if test "$?" -eq "0" ; then
echo " IP is reachable"
echo " IP is not Reachable"

Above one is the script which will check ping status and based on it’s return code it will print the statement. If exit status is 0 then it prints Host is reachable else Host not reachable.

root@sny-nripa:/scripts# sh -x
+ ping -c 1
PING ( 56(84) bytes of data.

--- ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

+ test 1 -eq 0
+ echo IP is not Reachable IP is not Reachable

It’s exit status 1 so statement it’s printed Host not reachable.

Using && (AND) and || (OR) Operators

By using Logical AND and OR Operators combine multiple commands to do required job.

mkdir /opt/backup && cp /important/* /opt/backup

Following command && will only executes when first command is succeed then second command will execute Or else both the commands will fail. In simple terms if first command is run with exit status zero then next command will execute. In above example if directory /opt/backup does not exists then no use of running copy command.

cp /tmp || cp /opt

Logical OR operator will execute second command when first command exit with non zero exit status. At any point one of the command will execute.

We can define exit /return code in each block of shell script from exit 0 – exit 255 to know where the script has been exited. If you did not defined any exit command in shell script than script exit status will considered as last command exit status.

shell scripting return codes Example

Defining exit code in shell script and see how it works 

root@ArkIT-Serv:/scripts# sh -x
+ echo Enter Host IP Address:\c
Enter Host IP Address:+ read IP
+ ping -c 1
PING ( 56(84) bytes of data.
64 bytes from icmp_seq=1 ttl=255 time=0.567 ms

--- ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.567/0.567/0.567/0.000 ms
+ [ 0 -gt 0 ]
+ exit 0

root@ArkIT-Serv:/scripts# cat
## Exit code mentioned
echo "Enter Host IP Address:\c"
read IP
ping -c 1 $IP
if [ "$?" -gt "0" ]; then
echo "$IP Not reachable."
exit 1
exit 0

We are controlling exit status of our script by specifying exit command. If ping command exit status is non zero then script will print IP not reachable and exit with exit status 1 Or else script will exit with exit status 0. shell scripting exit status


All Commands returns an exit status from 0 to 255. 0 exit status is success other than zero is error. Special variable $? is used to determine command exit status.

Related Articles

Download Free shell scripting pdf books

Create Multiple users using single command

Debug any shell script using this amazing tool

Learn shell script quotes and there usage

Video Tutorial

Thanks for your wonderful Support and Encouragement

Ravi Kumar Ankam

My Name is ARK. Expert in grasping any new technology, Interested in Sharing the knowledge. Learn more & Earn More

Leave a Reply

Your email address will not be published. Required fields are marked *