The reason why every single line of every single file was listed was due to variable substitution of your shell.
When you call
grep -ir "$featuredicon" *
bash will evaluate that. It will look up the variable
$featuredicon and put it into your command. Guess what
$featuredicon most likely is?
Right, nothing. So what you're actually doing is:
grep -ir "" *
And that matches every line of every file.
The dollar sign (
$) is a placeholder for
end-of-line in regular expression (I assume the same is true for grep).
If you want to search for a dollar sign, use
Be sure to check the StackOverflow question: How to grep for the dollar symbol ($)?