Bash Check if String Contains Substring


Bash Check if String Contains Substring

In Bash scripting, checking if a string contains a substring is useful for various string validation and conditional tasks.


Syntax

if [[ $string == *substring* ]]; then
    # commands if string contains substring
fi

The basic syntax involves using the == *substring* pattern within a double-bracket [[ ]] if statement to check if the string contains the specified substring.


Example Bash Check if String Contains Substring

Let's look at some examples of how to check if a string contains a substring in Bash:

1. Check if a Variable Contains a Substring

This script checks if the variable str contains the substring 'World' and prints a corresponding message.

#!/bin/bash

str="Hello, World!"
substring="World"

if [[ $str == *$substring* ]]; then
    echo "The string contains '$substring'."
else
    echo "The string does not contain '$substring'."
fi

In this script, the variable str is assigned the value 'Hello, World!', and the variable substring is assigned the value 'World'. The if statement uses the == *$substring* pattern to check if str contains substring. If true, it prints a message indicating that the string contains the substring. Otherwise, it prints a different message.

Check if a variable contains a substring in Bash

2. Check if a User Input String Contains a Substring

This script prompts the user to enter a string and checks if it contains the substring 'test', then prints a corresponding message.

#!/bin/bash

read -p "Enter a string: " str
substring="test"

if [[ $str == *$substring* ]]; then
    echo "The string contains '$substring'."
else
    echo "The string does not contain '$substring'."
fi

In this script, the user is prompted to enter a string, which is stored in the variable str, and the variable substring is assigned the value 'test'. The if statement uses the == *$substring* pattern to check if str contains substring. If true, it prints a message indicating that the string contains the substring. Otherwise, it prints a different message.

Check if a user input string contains a substring in Bash

3. Check if a String from a Command Output Contains a Substring

This script checks if the output of a command stored in the variable output contains the substring 'conf', then prints a corresponding message.

#!/bin/bash

output=$(ls /etc 2>/dev/null)
substring="conf"

if [[ $output == *$substring* ]]; then
    echo "The command output contains '$substring'."
else
    echo "The command output does not contain '$substring'."
fi

In this script, the variable output is assigned the result of a command that lists files and directories in the /etc directory, redirecting any errors to /dev/null. The variable substring is assigned the value 'conf'. The if statement uses the == *$substring* pattern to check if output contains substring. If true, it prints a message indicating that the command output contains the substring. Otherwise, it prints a different message.

Check if a string from a command output contains a substring in Bash

Conclusion

Checking if a string contains a substring in Bash is a fundamental task for string validation and conditional operations in shell scripting. Understanding how to check for substrings can help you manage and validate strings effectively in your scripts.