Signup/Sign In
LAST UPDATED: JULY 7, 2023

Bash if..else Statement

Bash if-else statement or conditional statement is the most fundamental concept in any programming language that provides the facility to execute code conditionally.

It is useful when we want to execute a piece of code only if certain conditions meet and execute some when the condition does not meet.

The if-else statement is used for this purpose and has several other forms such as if, if-else, if-elif-else, nested if, etc.

What is if..else conditions and statements in Bash?

To help you easily understand vocabularies used in this article, we have created a table which covers the meaning of if else in bash, conditions and statements.

Vocabulary Meaning Example
if A keyword that starts a conditional statement. It is followed by a condition in [] brackets and a then keyword. if [ condition ] then
condition A test that evaluates to true or false. $age -gt 18
statement Block of code that gets executed depending on the result of a condition. echo "You are not eligible"
elif These are used to add more conditions and statements to an if statement. elif [ condition2 ]; then
nested if Creating a if statement inside an if statement. Or in other words, a conditional statement inside in the statement of a conditional statement. if [ condition1 ]; then
if [ condition2 ]; then
else An alternative block of code to be executed if all if and elif condition are false. else echo "access denied"

We will learn to use all these conditional flows in this article. So, let's get started.

1. if Statement

This is the simplest use of a conditional statement that executes only when the specified condition is true. The general syntax of this statement is.

 if [ CONDITIONAL-COMMAND ] then STATEMENTS fi

The CONDITIONAL-COMMAND is a condition, and the if statement executes only when this condition is true.

The then keyword is associate with “if and elif statement” and enclose the statements that execute when "if" is true.

Always remember to add fi at the end of conditional statements.

Example: if Statement

In this example, first, a statement reads the user input and then validates that in the if conditional statement. If the user input is less than 20 then the if condition will execute.

 #!/bin/bash echo -n "Enter a number: " read VAL if [[ $VAL -lt 20 ]] then echo "The value is less than 20." fi

Here, the condition is [ $VAL -lt 20 ] which checks if variable $VAL is less than 20.

Save this code into a file with .sh extension, such as myscript.sh, and execute by using the following command.

 $ bash myscript.sh

It will ask for the user input and if the input is less than 20 then the output will be:


The value is less than 20.

2. if-else statement

This statement is an additional version of the if-statement and provides an else statement that executes when the if statement is false.

So, if you want to execute some statements when the if condition fails. The general syntax of this statement is:

 if [ CONDITIONAL-COMMAND ] then STATEMENTS else STATEMENTS fi

Let's understand by an example.

Example: if else in bash

In this example, first, a statement reads the user input and then validates that in the if conditional statement. if the user input is less than 20 then the if condition will execute, if not, then the else statement executes.

 #!/bin/bash echo -n "Enter a number: " read VAL if [[ $VAL -lt 20 ]] then echo "The value is less than 20." else echo "The value is equal or greater than 20." fi

It will ask for the user input and if the input is greater than or equal to 20 then else block will be executed and the output will be:


The value is equal or greater than 20.

Another great example is to use if else in bash script to check if a file exist.

3. if-elif-else Statement

This statement is used to test multiple conditions in a row and exit the control if any of the conditions is true.

It is also known as the if-else ladder in some programming languages. The general syntax of this statement is:

 if [ CONDITIONAL-COMMAND1 ] then STATEMENTS1 elif [ CONDITIONAL-COMMAND2 ] then STATEMENTS2 else STATEMENTS3 fi

The next elif statements execute only when the if condition or any preceding elif is false.

Example: if-elif-else Statement

Here, if the user enters 20 then the if condition fails and the control goes to elif condition where the condition is true and the statement executes.

 #!/bin/bash echo -n "Enter a number: " read VAL if [[ $VAL -lt 20 ]] then echo "The value is less than 20." elif [[ $VAL -eq 20 ]] then echo "The value is equal to 20." else echo "The value is equal or greater than 20." fi

It will ask for the user input and if the input is equal to 20 then elif block will be executed and the output will be:


The value is equal to 20.

4. Nested if Statement

Bash allows using any number of if statements inside an if statement, that means we can use a nested if statement to test multiple conditions.

It is helpful when we have to check multiple conditions inside an if statement. The general syntax of this statement is:

 if [ CONDITIONAL-COMMAND1 ] then if [ CONDITIONAL-COMMAND2 ] then STATEMENTS1 else STATEMENTS2 fi else STATEMENTS3 fi

The nested-if statement executes only if the first or parent if condition pass.

Example: Nested if else in bash

In this example, we are taking three input values from the user and test which one is smaller by using the nested-if statement.

 #!/bin/bash echo -n "Enter first number: " read VAL1 echo -n "Enter second number: " read VAL2 echo -n "Enter third number: " read VAL3 if [[ $VAL1 -lt $VAL2 ]] then if [[ $VAL1 -lt $VAL3 ]] then echo "$VAL1 is smallest Number" else echo "$VAL3 is smallest Number" fi fi

It will ask for user input three times and if the inputs are 20, 50, 40 respectively then the output will be:


20 is smallest Number

FAQs

Although, we have covered a lot about how you can use Bash if...else statements. Here are some possible questions related to their use.

Q. Is it possible to use Bash if…else statements in one line?

Yes, you can use if…else statements in one line in Bash by separating the keywords and statements with semicolons (;). For example:

 if [ condition ]; then echo "true"; else echo "false"; fi

This will print true or false depending on the condition.

In other word, just add semicolons after everything except if, then, elif, else and fi.

Q. How to use exit codes with Bash if…else statements?

You can use exit codes in if…else statements in Bash to check status of previous command or a script. The exit code, by convention, value 0 means success and any other value (1-255) means failure. The exit code of the previous command is denoted by $?.

 command if [ $? -eq 0 ]; then echo "command succeeded" else echo "command failed" fi

Q. Can I use arithmetic operators in Bash if…else statements?

You can use arithmetic operators such as -eq, -ne, -lt, -gt, -le, and -ge to compare numeric values in Bash if…else statements. For example:

 if [ $a -eq $b ]

The above code checks if variable $a is equal to variable $b.

Q. Can we nest if…else statements in Bash?

Yes, you can use nested if…else statements in Bash to create complex conditional logic as given below:

 if [ condition1 ]; then #statements1 elif [ condition2 ]; then if [ condition3 ]; then # (nested) statements2 else # (nested) statements3 fi else #statements4 fi

This will execute different blocks of statements depending on the evaluation of the conditions.

The Bash script uses conditional statements such as if, if-else, if-elif, and nested if to create conditional programs that execute based on the specified condition. You can also use if else in bash script inside for loop. Happy Shell scripting!



About the author:
Pradeep has expertise in Linux, Go, Nginx, Apache, CyberSecurity, AppSec and various other technical areas. He has contributed to numerous publications and websites, providing his readers with insightful and informative content.