How to check if a string ends with another in Bash
In this tutorial, we are going to learn about how to check if a string ends with another string in Bash or UNIX shell.
Consider, we have the following string:
name="ruby"
Now, we need to check if the last character (“by”) of the above string is matching with another substring/word.
Checking the string ends with another
We can use the double equals (==
) comparison operator in bash, to check if a string ends with another substring.
Here is an example:
name="ruby"
if [[ $name == *by ]] # * is used for pattern matching
then
echo "true";
else
echo "false"; fi
Output:
true
In the above code, if a $name
variable ends with by
then the output is “true” otherwise it returns “false”.
Similarly, you can also check the last three characters of a string like this:
name="ruby"
if [[ $name == *uby ]] # * is used for pattern matching
then
echo "true";
else
echo "false"; fi
Output:
true
We can also use the parameter expansion syntax to access the last n characters from a string instead of typing manually.
name="ruby"
if [[ $name == ${name::-3}* ]] # * is used for pattern matching
then
echo "true";
else
echo "false"; fi
${name::-3} : it gets the last three characters from a string.