Re: Question about associative array runtime assignment vs literal initialization

Zachary Santer <[email protected]>
Newsgroups gmane.comp.shells.bash.bugs
Message-ID <CABkLJUL9J23HHVyhyVVbKsrsWgYqfVipt4aaYaW78TvQNPbzXw@mail.gmail.com>
On Tue, Dec 23, 2025 at 9:47 AM Chet Ramey <[email protected]> wrote:
>
> On 12/22/25 10:01 AM, Koichi Murase wrote:
> > 2025年12月22日(月) 22:40 Greg Wooledge <[email protected]>:
> >> On Mon, Dec 22, 2025 at 10:46:12 +0800, 王伟 wrote:
> >>> Is this behavior intentional design, or is it considered a bug / limitation
> >>> of associative array assignment?
> >
> > I believe « declare -A assoc=("${kv[@]}") » should be supported [where
> > kv is an indexed array in the form kv=(key1 value1 key2 value2 ...)].
>
> https://lists.gnu.org/archive/html/bug-bash/2025-12/msg00030.html
>
> explains why this doesn't happen. It seems like you want a different
> order of operations.

On Tue, Dec 23, 2025 at 10:03 AM Chet Ramey <[email protected]> wrote:
>
> On 12/22/25 11:05 AM, Koichi Murase wrote:
> > 2025年12月23日(火) 0:21 Greg Wooledge <[email protected]>:
> >> hobbit:~$ declare -A aa=("${kv[@]}"); declare -p aa
> >> declare -A aa=(["one 1 two 2 two and a half 2.5 three 3"]="" )
> >
> > I agree that the above behavior is wrong.
>
> You would like word splitting in this one specific case? Treating `declare'
> as a declaration utility in all cases except this one?

$ declare -a array1=( zero one two three four five )
$ declare -a array2=( "${array1[@]:0:3}" )
$ declare -p array1 array2
declare -a array1=([0]="zero" [1]="one" [2]="two" [3]="three"
[4]="four" [5]="five")
declare -a array2=([0]="zero" [1]="one" [2]="two")

Is 'declare' not being treated as a declaration utility here? We're
asking for *the same* behavior in the case of an associative array,
the only difference being that the expanded words are "interpreted as
a sequence of alternating keys and values."
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.