${..}, 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 arrayfor 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.