Quote array indices to avoid them expanding as globs.
Problematic code:
read -r foo[index]
Correct code:
read -r "foo[index]"
Rationale:
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
.
Exceptions:
None.
Related resources:
- Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!
-
Installation
-
Usage
-
Integrating and extending
Each individual ShellCheck warning has its own wiki page like SC1000. Use GitHub Wiki's "Pages" feature above to find a specific one, or see Checks.
<--- This is a global footer, please don't edit it. --->