Bash IF
Bash IF statement is used for conditional branching in the sequential flow of execution of statements.
We shall learn about the syntax of if statement and get a thorough understanding of it with the help of examples.
- Syntax of if statement
- A simple If statement comparing strings
- if statement comparing numbers
- If expression with AND Condition
- If expression with OR Condition
- If expression with Multiple Conditions
Options for IF statement in Bash Scripting
If statement can accept options to perform a specific task. These options are used for file operations, string operations, etc. In this topic, we shall provide examples for some mostly used options.
- Example – if -z (to check if string has zero length)
- Example – if -s (to check if file size is greater than zero)
- Example – if -n (to check if string length is not zero)
- Example – if -f (to check if file exists and is a regular file)
Syntax of Bash If
Bash If statement syntax is
if [ expression ];
# ^ ^ ^ please note these spaces
then
statement(s)
fi
Note : Observe the mandatory spaces required, in the first line, marked using arrows. Also the semicolon at the end of first line. And if conditional statement ends with fi
The syntax to include multiple conditions with AND operator is
if [ expression ] && [ expression_2 ];
then
statement(s)
fi
The syntax to include multiple conditions with OR operator is
if [ expression ] || [ expression_2 ];
then
statement(s)
fi
For compound expressions, following if syntax is allowed. Please observe that the condition has double square brackets.
if [[ expression_1 && expression_2 || expression_3 ]];
then
statement(s)
fi
Example 1 – Bash IF
In the following example, we demonstrate the usage of if statement with a simple scenario of comparing two strings.
Bash Script File
#!/bin/bash
# if condition is true
if [ "hello" == "hello" ];
then
echo "hello equals hello"
fi
# if condition is false
if [ "hello" == "bye" ];
then
echo "hello equals bye"
fi
Note : In bash, respect each token/literal. Observe the spaces provided after if [ string literal “hello” and ==
When you run the above bash if example script file in a shell program like Terminal, the result would be
Output
~$ ./bash-if-example
hello equals hello
Example 2 – Bash IF – Compare Numbers
In the following example, we will compare numbers using if statement.
Bash Shell Script
#!/bin/bash
# if condition (greater than) is true
if [ 8 -gt 7 ];
then
echo "is 8 greater than 7 : true "
fi
# if condition (greater than) is false
if [ 7 -gt 8 ];
then
echo "is 7 greater than 8 : false "
fi
# if condition (less than) is true
if [ 7 -lt 8 ];
then
echo "is 7 lesser than 8 : true "
fi
# if condition (lesser than) is false
if [ 8 -lt 7 ];
then
echo "is 8 lesser than 7 : false "
fi
# if condition (equal to) is true
if [ 8 -eq 8 ];
then
echo "is 8 equals 8 : true "
fi
# if condition (equal to) is false
if [ 7 -eq 8 ];
then
echo "is 7 equals 8 : false "
fi
When you run the above bash script file in shell program like Terminal, the result would be
Output
~$ ./bash-if-example-2
is 8 greater than 7 : true
is 7 lesser than 8 : true
is 8 equals 8 : true
Example 3 – Using AND in IF Expression
In this example, we shall learn to use AND operator &&
to combine multiple conditions and form an expression (compound condition).
Bash Script File
#!/bin/bash
# TRUE && TRUE
if [ "hello" == "hello" ] && [ 1 -eq 1 ];
then
echo "if 1"
fi
# TRUE && FALSE
if [ "hello" == "hello" ] && [ 1 -gt 2 ];
then
echo "if 2"
fi
Output
~$ ./bash-if-example-3
if 1
Example 4 – Using OR in IF Expression
In this example, we shall learn to use OR operator ||
to combine multiple conditions and form an expression (compound condition).
Bash Script File
#!/bin/bash
# TRUE || FALSE
if [ "hello" == "hello" ] || [ 1 -eq 3 ];
then
echo "if 1"
fi
# FALSE || FALSE
if [ "hello" == "hi" ] || [ 1 -gt 2 ];
then
echo "if 2"
fi
Output
~$ ./bash-if-example-4
if 1
Example 5 – Bash IF with Multiple Conditions
In this example, we shall learn to include multiple conditions combined with AND and OR forming a single expression.
Bash Script File
#!/bin/bash
# FALSE && TRUE || FALSE || TRUE evaluates to TRUE
if [[ 8 -eq 11 && "hello" == "hello" || 1 -eq 3 || 1 -eq 1 ]];
then
echo "if 1"
fi
# FALSE && TRUE || FALSE evaluates to FALSE
if [[ 8 -eq 11 && "hello" == "hello" || 1 -eq 3 ]];
then
echo "if 2"
fi
Output
~$ ./bash-if-example-5
if 1
Example 6 – Bash IF -z
If statement when used with option z , returns true if the length of the string is zero. Following example proves the same.
Bash Script File
#!/bin/bash
if [ -z "" ];
then
echo "zero length string"
fi
if [ -z "hello" ];
then
echo "hello is zero length string"
else
echo "hello is not zero length string"
fi
Example 7 – Bash IF -s
Bash If statement when used with option s , returns true if size of the file is greater than zero.
Bash Script File
if [ -s /home/tutorialkart/sample.txt ];
then
echo "Size of sample.txt is greater than zero"
else
echo "Size of sample.txt is zero"
fi
Example 8 – Bash IF -n
Bash If statement when used with option n , returns true if the length of the string is greater than zero.
Bash Script File
#!/bin/bash
if [ -n "learn" ];
then
echo "learn is non-zero length string"
fi
if [ -n "hello" ];
then
echo "hello is non-zero length string"
else
echo "hello is zero length string"
fi
Example 9 – Bash IF -f
Bash If statement when used with option f , returns true if the length of the string is zero. Following example proves the same.
Bash Script File
#!/bin/bash
if [ -f /home/tutorialkart/sample.txt ];
then
echo "sample.txt - File exists."
else
echo "sample.txt - File does not exist."
fi
Conclusion
In this Bash Tutorial, we learned conditional branching in the sequential flow of execution of statements with bash if statement. We learned the syntax and usage of Bash IF with example shell scripts.