Each UNIX command returns a status when it terminates. If it is not successful, it returns a code which tells the shell to print an error message. You can use the
exit command to leave a shell program with a certain exit status.
Typical Values Of Exit Status On Bourne Shell
- 0 – Success.
- 1 – A built-in command failure.
- 2 – A syntax error has occurred.
- 3 – Signal received that is not trapped.
How do I print exit status when using bourne shell?
Type the command:
To print its exit status type the command:
$ echo $?
Try a few more examples:
grep vivek /etc/passwd
How to store or use exit codes in scripts
To store exit status of the last executed command to a shell variable called status, enter:
You can use exit status with test command or if command too.
#!/bin/sh user="$1" if grep "$user" /etc/passwd; then echo "$user has an account" else echo "$user doesn't have an account" fi
Run it as follows:
The grep command is used as condition but it can actually be any command. If it returns a zero exit status, the condition is true; otherwise, it is false. In this example, the while loop executes given commands as long as condition is true. Again, condition can be any command, and is true if the command exits with a zero exit status.
while condition; do commands done
Here is another simple example:
#!/bin/sh x=0 while [ $x != 3 ] do let x=x+1 echo $x done
Here is another example:
#!/bin/sh while [ -r "$1" ] do cat $1 >> output shift done
Run it as follows:
./script-name file1 file2 fil3
How to set an exit code value for my own script
To set an exit code in your script use:
This page showed how to get exit status of command when using Bourne shell (sh). For more info see:
- The exit status of a command
- Bash get exit code of command on a Linux / Unix
- Bash Find out the exit codes of all piped commands
- GNU/bash man page online here
|Category||List of Unix and Linux commands|
|Firewall||CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04|
|Network Utilities||dig • host • ip • nmap|
|OpenVPN||CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04|
|Package Manager||apk • apt|
|Processes Management||bg • chroot • cron • disown • fg • jobs • killall • kill • pidof • pstree • pwdx • time|
|Searching||grep • whereis • which|
|User Information||groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w|
|WireGuard VPN||CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04|