If you are just starting to explore the Bash coding language, you will soon find yourself wanting to create conditional statements. Conditional statements, in other words, define ‘if a condition is true or false, then do this or that, and if the opposite is true, do something else’. This is the most basic function of any conditional statement.
This article will introduce you to the five basic
if statement clauses. being
fi. The first simply opens a
if statement, the
then introduces the what commands to execute if the statement condition was true section and the
else introduces the what commands to execute if the statement condition was false section. Finally, the
fi closes the statement. We also have the special
elif on which we will see more in a minute. Let’s start with an easy example.
In this tutorial you will learn:
- How to implement an
ifstatement at the Bash command line
- How such
ifstatements can also be used inside a Bash scripts
- Examples showing you the
ficlauses in Bash
Software requirements and conventions used
|Category||Requirements, Conventions or Software Version Used|
|Software||Bash command line, Linux based system|
|Other||Any utility which is not included in the Bash shell by default can be installed using
|Conventions||# – requires linux-commands to be executed with root privileges either directly as a root user or by use of
$ – requires linux-commands to be executed as a regular non-privileged user
Example 1: Simple if statement at the command line
$ if [ 1 -eq 1 ]; then echo "Matched!"; fi Matched!
In this statement, we are comparing one to one. Note that
-eq mean equal to. To do the reverse, one can use
-ne which means not equal to, as shown in the following example:
$ if [ 0 -ne 1 ]; then echo "Matched!"; fi Matched!
In this case, we checked for non-equality, and as
0 is not equal to
if statement is true, and the commands after the
then will be executed. Let’s change this slightly:
$ if [ 1 -ne 1 ]; then echo "Matched!"; else echo "Not Matched!"; fi Not Matched!
Here we introduced an
else clause; what commands to execute when the condition in the
if statement has proven to be false (or not true). As we trying to query whether
1 is not equal (
1 this time, and as
1 does equal
1 (wich is not the case), the condition formulated in this
if statement is false, and we run into our
else statement with the matching text printed.
Example 2: Using and if statement from within a Bash shell script
It is good to note that you can easily copy and paste any
if statement shown here or elsewhere, and use it inside a Bash shell script. For example:
$ echo '#!/bin/bash' > myscript.sh $ echo 'if [ 1 -eq 1 ]; then echo "Matched!"; fi' >> myscript.sh $ chmod +x myscript.sh $ ./myscript.sh Matched! $
Here we simply created a small
myscript.sh shell script by using
echo and the
> redirector to redirect the output from our
echo to a file. When you use
> a new file will be created, and any file with the same name will be overwritten so please use it with care. Next we add our if statement again by using echo and a double redirector
>> which unlike
> will not create a new file, and simply append text to the file indicated.
chmod +x the script to make it executable, and execute the script using the
./ prefix which is required in Bash (any correct path specifier will do).
The first line of the script is simply making sure that we will be using the Bash interpreter for our script. It is good practice to always set this for Bash and other scripts (for other scripts, you will want to set this to whatever interpreter which is going to execute your script, for example
#!/usr/bin/python3 for a Python 3 (
.py3 for example) scripts etc).
When we execute the script we can see that the output is being generated as expected (
Example 3: What is elif?
elif clause provides us with extra shorthand flexibility short-cutting the need nested statements. Consider the following
#!/bin/bash if [ 0 -eq 1 ]; then echo '0=1' else if [ 0 -eq 2 ]; then echo '0=2' else echo '0!=2' fi fi
And the output thereof:
$ ./test.sh 0!=2
Here we stepped through the first
if statement, and since
0 does not match
else clause is activated. This happens a second time when
0 also proves unequal to
2 and hence the
-eq (equal to) condition fails, and the second
else clause is activated, giving as output
0!=2. Let’s compare this with an
elif based statement in the following
#!/bin/bash if [ 0 -eq 1 ]; then echo '0=1' elif [ 0 -eq 2 ]; then echo '0=2' else echo '0!=2' fi
And the output thereof:
$ ./test2.sh 0!=2
The script did exactly the same, but in a much more flexible and shorter way, requiring only one level of
if statement depth and with cleaner overall code. Note also that it is possible to have one
if statement followed by many
elseif statements, allowing a developer to test a variety of conditions is a neat looking, single level structure.
In this article, we explored examples exemplifying the
fi clauses in Bash. We also looked at how to implement
if statements at the Bash command line. We also looked at moving such statements into Bash scripts. Enjoy
if statements in Bash, and leave us some thoughts with your best
if tips and tricks!
And, for a somewhat more advanced look at what
if can do for you when combined with subshells, checkout our How To Use Bash Subshells Inside If Statements article!