You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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!