= here is literal. To assign by index, use
( [index]=value ) with no spaces. To keep as literal, quote
it.array=( [index] = value )array=( [index]=value )The shell doesn't care about the = sign in your array
assignment because it's not part of a recognized index assignment.
Instead, it's considered a literal character and becomes part of an
array element's value.
In the example problematic code, this is because the =
was intended to set the index, but the shell will not recognize it when
it is surrounded by spaces.
Make sure to remove any spaces around the = when
assigning by index, such as in the correct code.
If you wanted the = to be a literal part of the array
element, add quotes around it, such as env=( "LC_CTYPE=C" )
or specialChars=( "=" "%" ";" ) .
None.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.