grep foo* file
grep "foo*" file
The regex passed to grep frequently contains characters that collide
with globs. The code above is supposed to match "f followed by 1 or more
o's", but if the directory contains a file called "foo.txt", an unquoted
pattern will cause it to become grep foo.txt file.
To prevent this, always quote the regex passed to grep, especially when it contains one or more glob character.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.