[ ]
. Use a loop.[ "$file" = index.{htm,html,php} ] && echo "This is the main file"
for main in index.{htm,html,php}
do
[ "$file" = "$main" ] && echo "This is the main file"
done
Brace expansions in [ ]
will expand to a sequence of
words. Operators work on single words.
The problematic code is equivalent to
[ "$file" = index.htm index.html index.php ]
, which is
invalid syntax. A typical error message is
bash: [: too many arguments
or
dash: somefile: unexpected operator
.
Instead, use a for
loop to iterate over values, and
apply your condition to each.
None.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.