${..}
, 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:
`*foo*`
or $(*foo*)
to
expand a glob.var=$(*.txt)
instead of var=(*.txt)
to assign an array.$(..)
instead of ${..}
when
expanding an array element.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.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.