read -r foo[index]
read -r "foo[index]"
ShellCheck found an array element passed to read, where the
[]
was not quoted. This means the array index
[index]
will be treated as a glob range, and the word may
be replaced or trigger failglob
.
In the problematic example, having a directory named
food
will cause the command to become
read -r food
instead, since food
matches the
glob foo[index]
. The result is assigning a value to the
wrong variable.
Quote or escape the pattern as shown to ensure it always reads into
the array foo
at index index
.
None.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.