I have a string in Bash:
string="My string" How can I test if it contains another string?
if [ $string ?? 'foo' ]; then echo "It's there!" fi Where ?? is my unknown operator. Do I use echo and grep?
if echo "$string" | grep 'foo'; then echo "It's there!" fi That looks a bit clumsy.
Using Regex Operator Another option to determine whether a specified substring occurs within a string is to use the regex operator =~ . When this operator is used, the right string is considered as a regular expression. The period followed by an asterisk .
Bash allow u to use =~ to test if the substring is contained. Ergo, the use of negate will allow to test the opposite.
You can use Marcus's answer (* wildcards) outside a case statement, too, if you use double brackets:
string='My long string' if [[ $string == *"My long"* ]]; then echo "It's there!" fi Note that spaces in the needle string need to be placed between double quotes, and the * wildcards should be outside. Also note that a simple comparison operator is used (i.e. ==), not the regex operator =~.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With