Bash get exit code of command on a Linux / Unix nixCraft

I am a new Linux system user. How do I get the exit code of a command? How do I get the exit code or status of Linux or Unix shell command and store it into a shell variable?

Introduction – Each Linux or Unix shell command returns a status when it terminates normally or abnormally. For example, if backup.sh script is unsuccessful, and it returns a code which tells the shell script to send an e-mail to sysadmin.

data-ad-client=”ca-pub-7825705102693166″ data-ad-slot=”8594278667″/>

What is an exit code in bash shell?

Every Linux or Unix command executed by the shell script or user has an exit status. Exit status is an integer number. 0 exit status means the command was successful without any errors. A non-zero (1-255 values) exit status means command was a failure.

How to find out the exit code of a command

You need to use a particular shell variable called $? to get the exit status of the previously executed command. To print $? variable use the echo command or printf command:
date
echo $?
date-foo-bar
printf '%d\n' $?

Bash get exit code of command
How to get the exit code of a command such as date and date-foo-bar

From the above outputs, it is clear that the exit code is 0 indicates that date command was successful. Further, the exit code is 127 (non-zero) as the nonexistant-command was not successful.

Bash get exit code of command – How to use exit codes in shell scripts

So how do you store exit status of the command in a shell variable? Simply assign $? to a shell variable. The syntax is:

command
status=$?
## run date command ##
cmd="date"
$cmd
## get status ##
status=$?
## take some decision ## 
[ $status -eq 0 ] && echo "$cmd command was successful" || echo "$cmd failed"

How do I set an exit code for my own shell scripts?

The exit command cause normal shell script termination. It exits the shell with a status of N. The syntax is:

exit N
exit 1
exit 999

For example:

#!/bin/bash
/path/to/some/command
[ $? -eq 0 ] || exit 1

A sample shell script to get the exit code of a command

#!/bin/bash
#
# Sample shell script to demo exit code usage #
#
set -e ## find ip in the file ##
grep -q 192.168.2.254 /etc/resolv.conf ## Did we found IP address? Use exit status of the grep command ##
if [ $? -eq 0 ]
then echo "Success: I found IP address in file." exit 0
else echo "Failure: I did not found IP address in file. Script failed" >&2 exit 1
fi

Conclusion

This page showed how to use exit codes on Linux or Unix based system and how to get the exit status/code of command. For more info see:

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

Spread the love

Posted by News Monkey

blank