On Wed, Aug 1, 2018 at 12:53 AM, konsolebox <konsole...@gmail.com> wrote: > On Tue, Jul 31, 2018 at 10:31 PM, Chet Ramey <chet.ra...@case.edu> wrote: >> On 7/27/18 7:13 PM, konsolebox wrote: >>> Hi Chet, >>> >>> I wonder if you can allow bash to have another syntax to allow simpler >>> declaration and/or definition of associative arrays. The changes >>> needed to have it done seem simple enough, and the only conflict it >>> makes is a scalar `var={...` assignment, which in my opinion is better >>> quoted to make it more readable and less questionable from other >>> syntaxes like brace expansion. I believe most people intuitively >>> quotes it, and assignments that start with `{` is fairly rare. >> >> So it's syntactic sugar for `declare -gA a; a=( ... )'? > > That surely is one of the main goals, but it's not exact. `declare > -gA a; a=(...)` would always affect the main global scope. > > Example: > > $ g() { declare -gA a=([x]=y); }; f() { local -A a=(); g; declare -p > a; }; declare -A a=([a]=b); f; declare -p a > declare -A a=() > declare -A a=([x]="y" ) > > But as shown in my earlier example, a={...} would only affect the > nearest scope which was local a={}. > > This proposal simply requests an intuitively equivalent simple > assignment syntax for associative arrays just like a='...' and > a=(...), with same behavior for scoping. > > Maybe we can add another option like -G to have similar effect but > that's a little different already. Just allowing a={} would make it > simpler for every scripter.
By the way, is this rejected? -- konsolebox