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
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:
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
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
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:
➊ Open the Ubuntu Terminal.
➋ Write the following command in the command line to open a nano text editor:
nano even.sh
- 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
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
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:
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
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
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:
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
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
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:
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
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
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:
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
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
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:
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
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
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:
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
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
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:
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"
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
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:
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
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
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:
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
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
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:
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
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
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
Related Articles
- Check If a Variable Exists in Bash If Statement
- Check If An Input Argument Exists in Bash [4 Methods]
- Check If a String Contains Substring, Number & Letter in Bash
- Check If a String is Empty or Not in Bash [5 Methods]
- How to Compare Strings in Bash With if Statement [6 Methods]
- How to Compare Numbers in Bash With If Statement [2 Methods]
- Check If Array Contains an Element in Bash [6 Methods]
- Bash if-else Condition in One-Line [2 Ways]
- Using grep in if Statement in Bash [4 Cases]
- How to Use Regex in Bash If Condition? [4 Cases]
- Bash rm If Exists [All Case Explained]
- What is ‘$?’ in the Bash if Statement? [8 Examples]
<< Go Back to Bash Conditional Statements | Bash Scripting Tutorial