for
loop glob to prevent wordsplitting,
e.g. "$dir"/*.txt
.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
"$dir"/*.txt
or "$dir"/*."$ext"
will.
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.