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 S001. Use GitHub "Pages" feature above to find a specific one, or see Checks.

Clone this wiki locally