davidsheldon davidsheldon - 4 months ago 30
Bash Question

String contains in Bash

Using Bash, I have a string:

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.

Answer

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 the double quotes.

Comments