forloop glob to prevent wordsplitting, e.g.
for file in $dir/*.txt do echo "Found $file" done
for file in "$dir"/*.txt do echo "Found $file" done
When iterating over globs containing expansions, you can still quote all expansions in the path to better handle whitespace and special characters.
Just make sure glob characters are outside quotes.
"$dir/*.txt" will not glob expand, but
Exceptions similar to SC2086 apply. If the variable is expected to contain globs, such as if
dir="tmp/**" in the example, you can ignore this message.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.