Skip to content
Vidar Holen edited this page Oct 8, 2021 · 1 revision

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!

ShellCheck

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.

Clone this wiki locally