for loop glob to prevent word splitting,
e.g. "${dir}"/*.txt.for file in ${dir}/*.txt
do
echo "Found ${file}"
donefor file in "${dir}"/*.txt
do
echo "Found ${file}"
doneWhen 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.