Hi Chet

On Tue, 12 Aug 2025 at 01:18, Chet Ramey <chet.ra...@case.edu> wrote:

> On 8/9/25 1:09 AM, Oğuz wrote:
> >      $ declare -in x=a[x]
> >      $ echo $?
> >      1
> >      $ declare -p x
> >      bash: declare: x: not found
>
> Since you have -i, the a[x] expands to `0', which is an invalid name for
> a nameref, resulting in an assignment error.


That's … a surprising explanation, especially given that it *looks* like
infinite recursion.

I would rather that assignment modifier flags (-i, -l, -u, -r} simply be
ignored when binding.
Then it's a choice between:
 (a) applying those flags to the variable that it's bound to, or
 (b) enforcing them when indirectly assigning to a target variable.

Since we can already  write « declare -i "$reference" », I think (b) would
be more useful, and less surprising.

Assuming (b) then I would expect an error if «-n» is combined with «-f»,
«-F» or «-x».

Is it worth my while to attempt a patch to implement this?

-Martin

Reply via email to