On 8/17/15 4:19 AM, isabella parakiss wrote: > Quoting is necessary in a few cases: > > $ var=foo; declare -A "arr$var=([x]=y)" > bash: warning: arrfoo=([x]=y): quoted compound array assignment deprecated > $ var=foo; declare -A arr$var=([x]=y) > bash: syntax error near unexpected token `(' > $ var=foo; declare -A "arr$var"=([x]=y) > bash: syntax error near unexpected token `(' > > I don't think this should be the default behaiour...
This is exactly the case for which the warning is intended. If you want to construct variable names on the fly, use `eval' or don't mix declarations of constructed variable names with compound assignment. You can read the extensive discussion starting at http://lists.gnu.org/archive/html/bug-bash/2014-12/msg00028.html. http://lists.gnu.org/archive/html/bug-bash/2014-12/msg00115.html is the newest proposal. Chet -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, ITS, CWRU c...@case.edu http://cnswww.cns.cwru.edu/~chet/