If Else in Bash

Controlling the flow of statements execution in the bash program is a fundamental task of decision-making. Therefore, in the bash script, if else conditional statement is used to perform the execution of a set of statements by checking the conditions. In this article, I will walk you through a complete guide to the if else statement including syntax and various examples of it. Moreover, nested if else is also discussed here. Let’s start the discussion.

Key Takeaways

  • Knowing about the basics of the if statement.
  • Knowing about the basics of the if else.
  • Knowing about the basics of the nested if else statements.
  • Learning the functions of if else operators.
  • Learning the uses of the if else statement.

Free Downloads

Basics of If Statement in Bash

if is a conditional statement that is used to make decisions in the bash script. This statement checks whether the condition is true or false. With an if statement you can set multiple conditions as well.

Syntax of If Statement

The basic syntax of the if expression is given below:

if [condition]; then
# execution code block
fi
EXPLANATION

if: Starts the if operation.

[condition]: The condition is enclosed with square brackets ‘[ ]’.

then: Separates the condition from the execution code block.

# execution code block: If the condition is true, this code block will be executed.

fi: Ends the if operation.

Basics of If Else Statement in Bash

Like an if statement, if else is also a conditional statement used for conditional branching in bash scripting. When you set any condition using if else, it will verify the condition. If it is true, then execute the output else the condition is false, it will execute another output. Let’s see the flow diagram of if else statement below:

flow diagram of the if else statement in bash

Syntax of If Else Statement

To understand the basics of if else, you have to know the proper syntax of the statement otherwise the script will generate an error. Follow the syntax below:

if [ condition ]; then
    # execute the code if the condition is true
else
    # execute the code if the condition is false
fi
EXPLANATION

if: Starts the operation.

[condition]: The condition is enclosed with square brackets ‘[ ]’.

then: Separates the condition from the execution code block.

# execute the code if the condition is true: If the condition is true, it will execute this code.

else: Execute another code if the condition is false.

# execute the code if the condition is false: If the condition is false, it will execute this code.

fi: Ends the operation.

Basics of Nested If Else Statements in Bash

Nested if else statements are used to handle complex conditions. It will allow you to explore more precise decision-making by handling multiple conditions.

Syntax of Nested If Else Statements

The basic syntax of the nested if else is different from the if else statement. Let’s check the syntax below:

if [1st condition]; then
    # statement1 will be executed if 1st condition is true
    if [2nd condition]; then
        # statement2 will be executed if both 1st condition and 2nd condition are true
    else
        # statement3 will be executed if 1st condition is true and 2nd condition is false
    fi
else
    # statement4 will be executed if 1st condition is false
fi
EXPLANATION

If the 1st condition is true then the code in the satement1 will be executed. When both conditions are true the statement2  which is nested under the first if statement will be executed. Otherwise, the statement3 will be executed. However, if the first condition is false, the last else block code statement4 will be executed.

Bash If Else Operators

In bash scripting, numerous operators are under the if else statement to perform multiple types of operations. Some of the commonly used operators are provided in the following table:

Operator Function
-eq Checks if the integers are equal.
-ne Checks if the integers are not equal.
-gt Checks if the integer1 is greater than integer2.
-lt Checks if the integer1 is less than integer2.
-ge Checks if the integer1 is greater than and equal to integer2.
-le Checks if the integer1 is less than and equal to integer2.
= Checks if the strings are equal.
!= Checks if the strings are not equal.
&& Multiple commands connected by the AND operator will only execute if all the conditions are true.
| | Multiple commands connected by the OR operator will only execute if at least one of the conditions is true.
-f Checks if a regular file exists.
-d Checks if a directory exists.
-e Checks if a file exists.
-h Checks if a file exists that is a symbolic link.
-s Checks if a non-empty file exists.
-r Checks if a file exists that is readable.
-w Checks if a file exists that is writable.
-x Checks if a file exists that is executable.
-n Checks if the length of a variable is greater than zero.
-z Checks if a string is null.

How to Use If Else Statement in Bash

This statement can be used to perform different operations over numbers, arguments, strings, and arrays. Moreover, you can use nested if else to operate multiple conditions. Now, I will show you 11 examples of if else statement in the following section. An example of nested if else is also included here.

Example 01: Checking if a Number is Even or Odd With If Else in Bash

Checking a number if it is even or odd is an easy and simple task that helps you understand the function of an if else statement. This conditional statement basically enhances the readability of the bash script and allows you to perform your task efficiently. In this example, I will show you how to use if else to find an even or odd number. Let’s start the procedure:

Steps to Follow >

➊ Open the Ubuntu Terminal.

➋ Write the following command in the command line to open a nano text editor:

nano even.sh
EXPLANATION
  • nano: A text editor.
  • sh: A bash script named ‘even.sh’. You can name any according to your choices.

➌ Now, write the following script inside the nano text editor:

Script (even.sh) >

#!/bin/bash
echo "Enter a number: "
read number
if [ $((number % 2)) -eq 0 ]; then
    echo "even number"
else
    echo "odd number"
fi
EXPLANATION

Here, in #! /bin/bash, ‘#!’ is called shebang or hashbang. It indicates the interpreter to be used for executing the script, in this case, it’s Bash. When you put any number as an input, the read common reads the input number. The % operator divides the input number by 2 and checks if there is any remainder. If it does not find any remainder, the number is even and prints the if code block otherwise the number is odd and prints the else code block. The echo command echoes the quoted message.

➎ Then, press CTRL+S to save the file & press CTRL+X to exit the nano editor.

➏ Finally, run the script by the following command:

bash even.sh

checking if a number is even or odd

In this image, you can see that as an input, number 10 is entered and the output shows it is an even number. When the input number is 11, it shows that this is an odd number.

Example 02: Checking if a Number is Positive, Negative, or Zero With If Else

Whether a number is positive, negative, or zero, can be checked easily using the if else conditional statement. If a number is greater than zero, it will be a positive number and the number which is less than zero is a negative number. Based on this condition, this example is done within the if else statement. Check the steps provided below:

You can follow the Steps of Example 01, to save the bash script.

Script (positive.sh) >

#!/bin/bash
echo "Enter a number: "
read number
if [ $number -gt 0 ]; then
    echo "It is a positive number."
elif [ $number -lt 0 ]; then
    echo "It is a negative number."
else
    echo "It is a zero."
fi
EXPLANATION

In this bash script, if you enter a number, it will verify whether the assigned number is greater than 0 with the -gt option. If the condition is true it will print “It is a positive number.” Then I set another condition in the elif block that uses the -lt option to check whether the number is less than 0. If the condition is true it will print “It is a negative number.” Finally, it prints the else block code “It is a zero.” if both conditions are false.

Now, run the script by the following command:

bash positive.sh

checking if a number is positive, negative or zero

When you enter 2, it shows that it is a positive number. If you enter -3, it shows it is a negative number. Again if you put 0, the output shows it is a zero. You can enter any number to check whether the number is positive, negative, or zero.

Example 03: Nested If Else Statements

For handling multiple statements, inside the if else code, more if else conditions are nested. However, the more the nested conditions, the more chances of errors. Hence, debugging the nested script is difficult. In that scenario, a case statement can be used for controlling multiple conditions. Now, carefully follow the steps below to know the whole process of the uses of nested if else:

You can follow the Steps of Example 01, to save the bash script.

Script (nest.sh) >

#!/bin/bash
echo "Enter a number: "
read num
if [ $num -gt 0 ]; then
    echo "positive number."
    if [ $((num % 2)) -eq 0 ]; then
        echo "even number."
    else
        echo "odd number."
    fi
else
    echo "non-positive number."
    if [ $num -eq 0 ]; then
        echo "it is zero."
    else
        echo "negative number."
    fi
fi
EXPLANATION

After reading the input number with the read command, it checks whether the number is positive, negative, even, or add. If the number is greater than 0, it prints a “positive number.”. Another statement inside this block checks if the positive number is even or odd. After that, if the number is less than 0, it prints a “non-positive number.”. Another if else statement checks if the number is equal to 0 and prints “it is zero.” otherwise prints “negative number.”.

Now, run the script by the following command:

bash nest.sh

example of the nested if else statements

After running the bash script, you can see a prompt asking you to enter a number. Entering the number 3 displays that it is a positive and an odd number. If you run the bash script again and enter -2, it displays that it’s a non-positive and negative number. Similarly, you can check any number, it will execute the output based on the nested if else conditions.

Example 04: Checking the Number of Arguments With If Else

In the bash script, arguments pass information to the bash script from the command line. Bash offers some special variables like $1, $2, and $3 to pass the first, second, and third argument to the script respectively. The number of arguments is checked by the $# operator. Let’s know the process of how to use it within the if else statement:

You can follow the Steps of Example 01, to save the bash script.

Script (arg.sh) >

#!/bin/bash
if [ "$#" -eq 0 ]; then
    echo "No arguments."
elif [ "$#" -eq 1 ]; then
    echo "1 argument."
else
    echo "More than 1 argument."
fi
EXPLANATION

Here, the ‘$#’ operator checks the number of arguments provided by the users. When the number of arguments equals 0, it executes if block and shows no arguments. If you put 1 argument, it executes the elif block and displays 1 argument. If you write more than 1 argument, it executes the else block.

Now, run the script by the following commands:

bash arg.sh
bash arg.sh ar1
bash arg.sh ar1 ar2

checking the number of arguments in bash

The printed output is shown in the picture. In the 1st command, you can see nothing is written after the bash arg.sh script, so it shows no arguments. In the 2nd and 3rd command, ar1 and ar1, ar2 is entered respectively to check the number of arguments provided in the command line. If you enter more than 2 arguments, it displays that there is more than 1 argument.

Example 05: Checking if Creation of a File is Successful With If Else

If you create a file and want to verify whether the task is successful, you can use $? operator in bash within the if else statement. You can also check if the network connection is successful, or the existence of a command using this special operator. To know more, you can this article. Now, I will show you how to create a file and check the succession of the task in this example. Let’s dive into the details:

You can follow the Steps of Example 01, to save the bash script.

Script (file.sh) >

#!/bin/bash
echo "Enter the file name: "
read filename
# Attempt to create the file
touch "$filename"
# Check if the file creation was successful
if [ $? -eq 0 ]; then
    echo "File '$filename' created successfully."
else
    echo "Failed to create the file '$filename'."
fi
EXPLANATION

A prompt is taken to write a file name according to the users then a touch command is used to create that file. After creating the file, if the $? is equal to zero, the file is created successfully otherwise fails to be created.

Now, run the script by the following command:

bash file.sh

checking if a file created successfully

Here, the mou.txt file is created to check if it has been created successfully or not. After running the script and entering the file name, it shows that the file creation is successful.

Example 06: If Else Statement With Logical “AND” Operator in Bash

Generally, the AND operator is used to combine multiple conditions within an if else statement. If all the conditions are true, it will execute the if block output. In this example, I will combine two conditions with && operator. Now, check the following steps to know the detailed procedure:

You can follow the Steps of Example 01, to save the bash script.

Script (AND.sh) >

#!/bin/bash
echo "Enter your age: "
read age
echo "Do you have a graduation certificate? (yes/no): "
read certificate
if [ "$age" -ge 23 ] && [ "$certificate" = "yes" ]; then
    echo "You are eligible to apply for this job."
else
    echo "You are not eligible to apply for this job."
fi
EXPLANATION

Here, 1st prompt is used to enter age and the 2nd one is to take yes or no answer. Within the if condition, two conditions are taken using the && operator. If both conditions are true, it displays “You are eligible to apply for this job.” on the other hand, it will print the else block.

Now, run the script by the following command:

bash AND.sh

AND operator function within if else

After running the script, two-question prompts will appear asking about your age and graduation certificate. If you enter your age of 24 and answer ‘yes’ to the certificate question, the output shows that you are eligible to apply for this job. However, if you put 24 or answer ‘no’ to the certificate question, the output shows you are not eligible to apply for this job.

Example 07: If Else Statement With Logical “OR” Operator

The OR operator combines multiple conditions but it does not need to satisfy all the conditions like the AND operator. If only one condition is true, the output will be executed. Here, I will explain the same example used in the previous AND section to let you how the || operator works under the if else statement. Check the steps mentioned below:

You can follow the Steps of Example 01, to save the bash script.

Script (OR.sh) >

#!/bin/bash
echo "Enter your age: "
read age
echo "Do you have a graduation certificate? (yes/no): "
read certificate
if [ "$age" -ge 23 ] || [ "$certificate" = "yes" ]; then
    echo "You are eligible to apply for this job."
else
    echo "You are not eligible to apply for this job."
fi
EXPLANATION

Unlike the AND operator, the OR operator does not need to satisfy both conditions. From the two conditions, if at least one condition whether age or the certificate is true, the output will show the if block code “You are eligible to apply for this job.” otherwise, it will execute the else block code “You are not eligible to apply for this job.”.

Now, run the script by the following command:

bash OR.sh

OR operator function within if else

You can see the bash OR.sh script’s output in this image. After entering the age of 24 and answering ‘no’ to the 2nd question, it still executes the code that you are eligible to apply for this job. This is how the OR operator works with if else statement.

Example 08: Concatenating Strings With If Else in Bash

Concatenating strings is one of the common tasks that everyone should learn to operate the bash script. You are going to have more control over the concatenation of the strings by adding the if else condition with it. In this example, I will explain how to add two strings using if else. So follow the steps provided below:

You can follow the Steps of Example 01, to save the bash script.

Script (concatenate.sh) >

#!/bin/bash
echo "Enter your name: "
read name
string2="welcome to linuxsimply.com"
if [ "$name" = "john" ]; then
    string1="john"
else
    string1="$name"
fi
echo "$string1 $string2"
EXPLANATION

If you write the name john, it will add this string1 with the string2=“welcome to linuxsimply.com”. Else you write another name, that will also be added with string2.

Now, run the script by the following command:

bash concatenate.sh

concatenating strings using if else

Here, the 1st string is ‘name’ and the 2nd string is ‘welcome to linuxsimply.com’. If you write the name john, the output will be ‘john welcome to linuxsimply.com’ and if put another name, it will add the name with the 2nd string and print the output.

Example 09: Arithmetic Operation With Variables Using If Else

Arithmetic operations mean addition, subtraction, multiplication, and division of variables. These operations can be performed based on different conditions using the if else statement. Here, the addition operation is explained. You can perform other operations as well following a similar procedure. Check the example below:

You can follow the Steps of Example 01, to save the bash script.

Script (sum.sh) >

#!/bin/bash
echo "Enter number1: "
read num1
echo "Enter number2: "
read num2
sum=$((num1 + num2))
if [ $sum -gt 50 ]; then
    echo "$sum is greater than 50."
else
    echo "$sum is less than 50."
fi
EXPLANATION

Here, the addition operation is performed by adding number1 and number2. If the sum of the two numbers is greater than 50, it will execute the if block code. If it is false, it will execute the else block code.

Now, run the script by the following command:

bash sum.sh

arithmetic sum using if else in bash

Two input variables 30 and 40 are taken to calculate the sum and a condition is set using the if else statement. You can notice that the sum of the variables is 70 that’s why it shows the sum is greater than 50. Then as an input variables 20 and 20 are added and it shows that the sum is less than 50.

Example 10: Checking If a File Exists With If Else

You can check whether a file exists in your Ubuntu or not using the if else condition. Here, the -e option is used to check the file’s existence. You can also check if a directory exists using the if else statement. Now, follow the guidelines provided below to check file existence:

You can follow the Steps of Example 01, to save the bash script.

Script (exist.sh) >

#!/bin/bash
filepath="/home/mou/file1.txt"
# Check if the file exists
if [ -e "$filepath" ]; then
    echo "The file1.txt exists."
else
    echo "The file1.txt does not exist."
fi
EXPLANATION

A file path is defined as /home/mou/file1.txt to check the file1.txt exists in the /home/mou location. Within the if else condition, file existence is checked using the -e flag.

Now, run the script by the following command:

bash exist.sh

checking if a file exists using if else

You can see in this image that the file1.txt exists in the specified location.

Example 11: Using If Else to Verify Password in Bash

Verifying passwords is a common practice to avoid unauthorized access. Using the if else condition, you can check if the password is correct or wrong. You will get only access if the password matches with the specified password. Let’s know the entire process of checking it:

You can follow the Steps of Example 01, to save the bash script.

Script (pass.sh) >

#!/bin/bash
# Define the valid password
valid_pass="secret"
echo "Enter your password: "
read entered_pass
# Check if the entered password is correct
if [ "$entered_pass" == "$valid_pass" ]; then
    echo "valid password, access granted."
else
    echo "invalid password."
fi
EXPLANATION

First of all, you have to define a valid password which is ‘secret’. After writing a password in the prompt, it verifies if the entered password==valid password. If both password matches, that is a valid password otherwise the password is invalid.

Now, run the script by the following command:

bash pass.sh

checking if a password is correct

In this picture, you can notice that when you write the specified password ‘secret’, it shows that it is a valid password and you get access. However, if you write another password ‘mou’, it shows that the password is invalid.

Conclusion

I hope this article helps you understand the uses of if else condition. Here, I have shown the basics of the if else statement including examples and various important operators used on a regular basis within the if else condition. In addition, 11 examples are explained to let you know the different uses of this conditional statement. Follow each step properly to get an accurate output. Best wishes.

People Also Ask

Is there Elif in bash?
Yes definitely, there is an elif in bash which basically means else if. It is used for complex conditional operations.
What does @$ mean in bash?
This special operation passes all the command line arguments to the bash script and it must be written within double quotes “@$”.
What does == mean in bash?
The == is used to compare strings in bash. For example, string1==string2 condition will be true if both strings are equal.

Related Articles


<< Go Back to Bash Conditional Statements | Bash Scripting Tutorial

5/5 - (13 votes)
Mitu Akter Mou

Hello, This is Mitu Akter Mou, currently working as a Linux Content Developer Executive at SOFTEKO for the Linuxsimply project. I hold a bachelor's degree in Biomedical Engineering from Khulna University of Engineering & Technology (KUET). Experiencing new stuff and gathering insights from them seems very happening to me. My goal here is to simplify the life of Linux users by making creative articles, blogs, and video content for all of them. Read Full Bio

Leave a Comment