How to compare strings in Bash
Of course, in any programming language, you have to compare some values in code such as strings or integer. From this article, you can check the equality and inequality of two strings by using if statement with “==” is to check equality and “!=” is to check inequality.
Example-1: Using “==”
Bash has not the built-in function to compare two strings. Thus we have to declare 2 variables and using the “==” operator to compare.
#!/bin/bash
name1="Maria"
name2="John"
#Check equality two string variables
if [ $name1 == $name2 ]; then
echo "Strings are equal"
else
echo "Strings are not equal"
fi
#Check equality of a variable with a string value
if [ $name1 == "Maria" ]; then
echo "Name: Maria"
else
echo "Name: John"
fi
As above code, output will show first comparison is not equal and second comparison is equal.
Example-2: Using “!=”
The "!=" operator will check the inequality of two string variables.
So, if condition will be true and “You are not Maria” will print.
#!/bin/bash
name="John"
#Check equality of a variable with a string value
if [ $name != "Maria" ]; then
echo "You are not Maria"
else
echo "You are John"
fi
Example-3: Partial String Comparison
Sometime you want to check if the word is in the string. You can compare partial value by using wild card character.
Char * will be used as wild card character for partial matching.
Note that, this comparison is case sensitive, which means uppercase and lowercase is different.
#!/bin/bash
str_val="We are learning bash programming"
if [[ $str_val == *learning* ]];
then
echo "Partially Match"
else
echo "No Match"
fi
# ==> "Partially Match"
if [[ $str_val == *Learning* ]];
then
echo "Partially Match"
else
echo "No Match"
fi
# ==> "No Match"
Example-4: Compare string with user input value
This example will take the value from user input and then compare the inequality of the data with a fixed value. If the condition is true then it will print “No Record Found”, otherwise it will print “Record Found”.
#!/bin/bash
echo "Enter Your Name"
read input
if [ $input != "kysuIT" ];
then
echo "No Record Found"
else
echo "Record Found"
fi