CentOS Debian Mint openSUSE Red Hat Scripting Ubuntu

How to Use Conditional Statements in Bash Scripts

In bash scripting, conditional statements help in checking whether a specific condition is true or false. When the condition is true, the shell script runs or executes a block of code that is stipulated by the script. Otherwise, the script skips executing the code and jumps to the next conditional statement.

In bash scripting, conditional statements include if, if-else, if-elif-else and nested if statements. In this guide, we will explore how these conditional statements are used in the execution of scripts.

The if statement

In its simplest form, the ‘if’ statement takes the following syntax.

if [[ conditional_statement ]]

then

 command 

fi

The conditional if statement begins with the if keyword. This is followed thereafter by a conditional statement which is then followed by the then keyword which precedes the command to be executed if the conditional statement holds true.

So, if the condition_statement holds true, then the command is executed. If it evaluates to False, nothing happens and the command is entirely ignored and the script exits.

Let us take an example of a bash script that checks if a score provided is greater than 80.

$ vim check_score.sh

Copy and paste the script.

#!/bin/bash

echo -n "Please Enter a score: "

read score

if [[ $score -gt 80 ]]

then

 echo "You have passed the exam!"

fi

Take careful note of the indentation. Assign execute permissions using the chmod command as follows:

$ chmod +x check_score.sh

Then run the script.

$ ./check_score.sh

If you enter a value that is greater than 80, the conditional statement holds true and the echo message is printed to the stdout

However, if the value provided for the score is less than 80 – the conditional statement evaluates to false and nothing happens. The script simply exits.

The if-else statement

In the previous shell script, only one command was executed after the conditional statement evaluated to True. When the condition evaluated to False, nothing was printed and the script just exited. The if-else statement helps us to execute a command should a condition evaluate to false. The else statement is then followed by a command or statement should the condition return False.

if [[ conditional_statement ]]

then

 command 

else

 command

fi

Let’s modify the previous shell script and add an else statement

#!/bin/bash

echo -n "Please Enter a score: "

read score

if [[ $score -gt 80 ]]

then

 echo "You have passed the exam!"

else

 echo "You have failed the exam, please try again"

fi

Here, the shell script executes the block of code after the else statement only if the first condition evaluates to false – that is if the score provided is less than 80.

In the first instance, the score provided is 90, which is greater than 80, and hence the first statement in the script is executed and the script exits.

In the second case, however, 70 is provided, and since the value is less than 80, the script skips the first statement since it evaluates to false and proceeds to execute the second statement after the else statement.

The if-elif-else statement

So far, we have checked for one condition that evaluates to either True or False. The elif (else -if ) statement is used where there are several conditional statements that have different outcomes. If one condition evaluates to False, it proceeds to check if other conditions are True. Here’s a simple syntax for the if-elif-else statement.

if [[ conditional_statement_1 ]]

then

 command_1 

elif [[ conditional_statement_2 ]]

then

 command_2

else

 command_3

fi

Consider the script below

#!/bin/bash

echo -n "Please Enter a score: "

read score

if [[ $score -ge 90 ]]

then

 echo "Excellent!"

elif [[ $score -ge 70 ]]

then

 echo "Congratulations! Job well done!"

elif [[ $score -ge 50 ]]

then

 echo "Fairly done. There's more room for improvement!"

else

 echo "Poorly done"

fi

In this example, if the score is greater than or equal to 90, it prints the message Excellent! However, if the score is less than 90 but greater than or equal to 70, it prints Congratulations! Job well done!.
If the score is less than 70, but greater than or equal to 50 it prints out the message Fairly done. There’s more room for improvement!

And finally, if the score is less than 50, it prints out Poorly done.

Nested if statement

A nested if statement comprises an if statement inside another if statement. when one condition holds true, the script proceeds to check the next condition. In the demonstration below, we are going to take the input values of 3 numeric values and check which among them is the largest.

#!/bin/bash

read -p "Please enter the value of j:" j

read -p "Please enter the value of k:" k

read -p "Please enter the value of l:" l

if [ $j -gt $k ]

then

 if [ $j -gt $l ]

 then

 echo "j is greatest"

 else

 echo "l is greatest"

 fi

else

 if [ $k -gt $l ]

 then

 echo "k is greatest"

 else

 echo "l is greatest"

 fi

fi

Summary

That was a high-level overview of conditional statements in bash scripts. As you have seen conditional statements are used to determine the outcome of a script based on set conditional expressions. Hopefully, you now have a basic foundation of conditional statements.

Similar Posts