[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Indices of array variables are sometimes considered unset (or just d
From: |
Eduardo Bustamante |
Subject: |
Re: Indices of array variables are sometimes considered unset (or just display an error). |
Date: |
Mon, 5 Nov 2018 19:37:48 -0800 |
On Mon, Nov 5, 2018 at 6:01 PM Great Big Dot <greatbigdot@gmail.com> wrote:
(...)
> > [... A]ccessing the index list of multiple-element arrays
> > fails when you append the unset expansion. With single-element
> > arrays, it fails iff the element in question contains any special
> > characters or whitespace, and thinks the array is unset otherwise.
> > (Further testing shows that a value of the empty string also throws
> > an error.) Finally, empty arrays are also considered unset[...]
>
> Oops, just realized what's causing this. I guess it isn't necessarily a
> bug? Debatable, I guess.
>
> What's actually happening here is that the *indirection* expansion
> "${!foo}", and not the *indices* expansion "${!foo[@]}", is what is being
> preformed on something like "${!array[@]-}". Both expansions, while
> unrelated, happen to use the same syntax, with the exception that
> indirections apply to normal variables and index expansions apply to array
> variables. For some reason, adding on the "${foo-default}" expansion causes
> the former to be used instead of the latter. This can be seen here:
Sorry, I'm having a hard time following this email thread.
What is your ultimate goal or the actual problem you're trying to solve?
(BTW, I would recommend against trying to do three expansions in one.
It might be more terse, but it's hard to read and as you found out,
leads to weird behavior)