When coding any script, let alone Bash, having an exit clause in your script is a good coding practice. If you need to terminate your script based on a condition or after a certain action based on the exit code of the command, these clauses come in handy.
In this article, we’re going over the Bash exit command. We’ll be taking a look at how you can use this command and exit statuses of executed commands to terminate a Bash script.
Also read: How to install Kali Linux on Virtualbox?
Bash exit status
Regardless of successful termination, each shell command returns an exit code. By default, non-zero error codes mean that there was some problem with the execution.
The $? variable returns the exit status of the last executed command. For example, if you run ls on a non-existent directory, the return code will be non-zero.
ls /no_dir &> /dev/null
echo $?
When you’re running multiple commands in a pipeline, the exit status is that of the last command executed.
sudo tcpdump -n -l | tee file.out
echo $?
The above set of commands will return the exit status of the tee command.
Also read: How to remove a Directory in Linux?
Bash exit command
The exit command exits the shell with the status provided.
exit N
In the above command, the script will end when encountering the N status code. If no code is provided, the command uses the error code of the last executed command.
When you use this command in a shell script, the error code returned is of the last executed command.
Examples
You can use the exit command in conjunction with statements like if. The following example terminates the script if the specified string is found in a filename.
if grep -q "search-string" filename then
echo "String found."
else
echo "String not found."
fi
If you’re running a list of commands using conditional operators like && or ||, the command’s exit status determines whether the condition is true or not. In the example below, the mkdir command will only execute if the cd command executes and returns 0.
cd /opt/code && mkdir project
Below is an example of what will happen if a script is run by a non-root user.
#!/bin/bash
if [[ "$(whoami)" != root ]]; then
echo "Only user root can run this script."
exit 1
fi
echo "doing stuff..."
exit 0
Now if you run this script as root, the exit code will be 0, otherwise, you’ll get 1.
Also read: Mint vs Ubuntu: Linux distro comparison