Table of Contents
All the code snippets are written in the
MyScript.sh
file, while thedummy.txt
file contains some sample data we used in our scripts.
Using -q
Option with grep
Use the -q
option with grep
to check if the grep
command result is empty.
1 2 3 4 5 6 7 8 |
grep -q "pattern" dummy.txt if [ $? -eq 0 ]; then echo "Match found" else echo "No match found" fi |
1 2 3 |
Hello World! |
1 2 3 |
./MyScript.sh |
1 2 3 |
No match found |
In the above example, the grep
command searched for the given pattern in the file dummy.txt
.
Here, the -q
option suppressed the output, and the exit status of grep
is checked with $?
. If the exit status is 0
, the pattern is found, and Match found
is printed. Otherwise, No match found
is printed.
In the above case, the pattern pattern
was not found in dummy.txt
, so the grep
result was empty, and the message No match found
was displayed on the console.
Using -c
Option with grep
Use the -c
option with grep
to check if the grep
command result is empty.
1 2 3 4 5 6 7 |
if [ $(grep -c "pattern" dummy.txt) -eq 0 ]; then echo "No match found" else echo "Match found" fi |
1 2 3 |
Hello World! |
1 2 3 |
./MyScript.sh |
1 2 3 |
No match found |
In the above example, grep
searched for the pattern pattern
in the file dummy.txt
. Here, the -c
option counts the number of matches, and the result is checked with an if
statement.
If the count is 0
, the script outputs the message No match found
to the console using the echo
command. Otherwise, Match found
is printed. In the above example, the pattern was not found in the given file, so the grep
result was empty and No match found
was displayed on the console.
Using Command Substitution with $()
Use command substitution with $()
to check if the grep
command result is empty.
1 2 3 4 5 6 7 |
if [ -z "$(grep "pattern" dummy.txt)" ]; then echo "No match found" else echo "Match found" fi |
1 2 3 |
Hello World! |
1 2 3 |
./MyScript.sh |
1 2 3 |
No match found |
In this example, the substitution command is used with $()
to capture the output of grep
, and then the -z
option of the test
command is used to check if the resulting string is empty or not. Here, the grep
command searches for the pattern pattern
in the file dummy.txt
.
The output of grep
is obtained using command substitution ($( )
), and the resulting output is checked using the -z
option of the test command ([ ]
). If the output is empty, the pattern is not found, and No match found
is printed. Otherwise, Match found
is printed. In the above case, the pattern was not found in the file, so the grep
result is empty and No match found
is displayed on the console.
Use grep
with /dev/null
Use grep
with /dev/null
to check if the grep
command result is empty.
1 2 3 4 5 6 7 8 |
grep "pattern" dummy.txt > /dev/null if [ $? -eq 0 ]; then echo "Match found" else echo "No match found" fi |
1 2 3 |
Hello World! |
1 2 3 |
./MyScript.sh |
1 2 3 |
No match found |
The file dummy.txt
was searched for the pattern "pattern"
using the grep
command in this example. Then, the output of grep
is redirected to /dev/null
to discard it. After that, the exit status of grep
is checked with $?
.
If the exit status is zero
, the pattern is found, and Match found
is printed. Otherwise, No match found
is printed. The pattern is not matched in the above example, so No match found
is printed.
Use wc -l
Option with grep
Use the wc -l
option with grep to check if the grep
command result is empty.
1 2 3 4 5 6 |
count=$(grep "pattern" dummy.txt | wc -l) if [ $count -eq 0 ]; then echo "No match found." fi |
1 2 3 |
Hello World! |
1 2 3 |
./MyScript.sh |
1 2 3 |
No match found |
The grep
command searched for the given pattern in the dummy.txt
file. The output of grep
is piped to wc -l
, which means the output of the grep
command will be passed to the next command wc -1
. If grep
does not find any match for the pattern, its output will be empty, which means the count
variable will be zero
.
Then, the if
statement checks if the $count
variable is zero
. If the $count
variable is zero
, the grep
output was empty, passed to the wc-1
because the pattern was not matched. The script then outputs the message No match found.
to the console using the echo
command.
That’s all about Bash check if grep result is empty.