-
Notifications
You must be signed in to change notification settings - Fork 1.8k
SC2211
Joachim Ansorg edited this page Nov 12, 2021
·
2 revisions
This is a glob used as a command name. Was it supposed to be in ${..}
, array, or is it missing quoting?
for f in $(*.png); do echo "$f"; done # Trying to loop over a glob
array=$(*.txt) # Trying to assign an array
echo "$(array[1])" # Trying to expand an array
for f in *.png; do echo "$f"; done
array=(*.txt)
echo "${array[1]}"
You are using a glob as a command name. This is usually a mistake caused by one of the following:
- Trying to use
`*foo*`
or$(*foo*)
to expand a glob. - Using
var=$(*.txt)
instead ofvar=(*.txt)
to assign an array. - Using
$(..)
instead of${..}
when expanding an array element. - Running a program with a name or directory that contains glob characters without escaping them.
Look up and double check the syntax of what you're trying to do.
None. If you want to specify a command name via glob, e.g. to not hard code version in ./myprogram-*/foo
, expand to array or parameters first to allow handling the cases of 0 or 2+ matches.