Finding presence of substring within a string in BASH

I have a script that is trying to find the presence of a given string inside a file of arbitrary text.

I've settled on something like:

#!/bin/bash
file="myfile.txt"
for j in `cat blacklist.txt`; do
  echo Searching for $j...
  unset match
  match=`grep -i -m1 -o "$j" $file`
  if [ $match ]; then
    echo "Match: $match"
 fi
done

Blacklist.txt contains lines of potential matches, like so:

matchthis
"match this too"
thisisasingleword
"This is multiple words"

myfile.txt could be something like:

I would matchthis if I could match things with grep.  I really wish I could. 
When I ask it to match this too, it fails to matchthis.  It should match this too - right?

If I run this at a bash prompt, like so:

j="match this too"
grep -i -m1 -o "$j" myfile.txt

...I get "match this too".

However, when the batch file runs, despite the variables being set correctly (verified via echo lines), it never greps properly and returns nothing.

Where am I going wrong?


Solution 1:

Wouldn't

grep -owF -f blacklist.txt myfile.txt 

instead of writing an inefficient loop, do what you want?