1. Overview

Shell scripts are a useful feature in the Linux operating system. We can use shell scripting to carry out various operations, such as installing and customizing various applications, fixing issues, and more.

Conditional expressions are essential in shell scripting because they allow us to execute statements based on a specific condition. We will especially focus on the if-else statement for this article.

On the other hand, the grep command in Linux helps us search for matching patterns in a given file.

In this tutorial, we’ll discuss the process of including the grep command in an if-else statement in Bash. But before we do that, we’ll use grep in a simple if statement to get an idea of how it works.

2. Using grep in the if Statement

Firstly, let’s create a shell script (file.sh) that contains the if statement:

#!/bin/bash

num=1
if [ $num -eq 1 ]
then
    echo "The value is 1."
fi

Above, we’re checking if the value of the num variable is equal to (-eq) 1. If it is, we’ll print the given statement.

Now, let’s make it executable:

$ chmod +x file.sh

Finally, let’s run it to get the output:

$ ./file.sh
The value is 1.

As we can see, the output is showing us what we expected.

So, let’s now integrate the grep command into the if statement to perform an advanced operation:

#!/bin/bash

if [ $(grep -c "Baeldung" /projects) -eq 1 ]
then
    echo "We have found Baeldung."
fi

Above, we’ve used grep to find the string Baeldung in the projects file. The -c option tells grep to count its total number of occurrences. If the count is equal to 1, we’ll print the given statement.

The output will be:

$ ./file.sh
We have found Baeldung.

As we can see, the given condition is true; thus, the output prints the given statement.

If we want the search to be case-insensitive, we can append the -i option, short for –ignore-case, to the grep -c command:

#!/bin/bash

if [ $(grep -ic "Baeldung" /projects) -eq 1 ]
then
    echo "We have found Baeldung."
fi

Here’s the output:

$ ./file.sh
We have found Baeldung.

So, let’s move on to the next section, where we’ll combine the grep command with the if-else statement.

3. Using grep in the if-else Statement

Let’s have a look at the below shell script:

#!/bin/bash

if [ $(grep -ic "Baeldung" /projects) -eq 1 ]
then
    echo "We have found Baeldung."
else
    echo "We haven't found Baeldung."
fi

The logic is simple:

  • If the count is equal to 1, we’ll print the statement under if.
  • If the count isn’t equal to 1, we’ll print the statement under else.

Let’s check the output:

$ ./file.sh
We haven't found Baeldung.

As we can see, the given condition is false, and hence, the output prints the statement under else.

4. Using grep in the else-if Statement

So, now that we’ve seen how to use the grep command in an if-else statement in one of the simplest ways possible, we can take this a step further and combine grep with the else-if statement:

#!/bin/bash

if [ $(grep -ic "Baeldung" /projects) -eq 1 ]
then
    echo "We have found Baeldung."
elif [ $(grep -ic "Baeldung" /projects) -gt 1 ]
then
    echo "Baeldung is there multiple times."
else
    echo "We haven't found Baeldung."
fi

Let’s review the logic:

  • If the count is equal to 1, we’ll print the statement under if
  • If the count isn’t equal to 1, we’ll check the elif condition
  • If the count is greater than (-gt) 1, we’ll print the statement under elif
  • If the count isn’t greater than 1, we’ll print the statement under else

Here’s the output:

$ ./file.sh
Baeldung is there multiple times.

The output indicates that the elif statement condition is true, and thus, the output prints the statement under elif.

5. Using grep in a Nested if Statement

Moreover, we can also use grep with the nested if statement:

#!/bin/bash

if [ $(grep -ic "Baeldung" /projects) -ge 1 ]
then
    if [ $(grep -ic "Baeldung" /projects) -eq 1 ]
    then
        echo "We have found Baeldung."
    elif [ $(grep -ic "Baeldung" /projects) -eq 2 ]
    then
        echo "Baeldung is mentioned 2 times."
    else
        echo "Baeldung is mentioned more than twice."
fi

Let’s understand the logic step-by-step:

  • If the count is greater than or equal to (-ge) 1, we’ll check the nested if condition
  • If the count is equal to 1, we’ll print the statement under the nested if
  • If the count isn’t equal to 1, we’ll check the elif condition
  • If the count is equal to 2, we’ll print the statement under elif
  • If the count isn’t equal to 2, we’ll print the statement under else

Let’s check the output:

$ ./file.sh
We have found Baeldung.

As we can see, the nested if statement condition is satisfied, and hence, the output prints the statement under the nested if.

6. Conclusion

In this article, we’ve seen how to use grep in an if-else statement and potentially increase the usefulness of our shell scripts.

The grep command is undoubtedly a useful command for shell scripting, as it allows us to perform an additional range of operations.