On Thu, Apr 8, 2021 at 2:44 AM Chet Ramey <chet.ra...@case.edu> wrote: > Indirection does not check whether or not the variable it's indirecting > is $@/$* or ${array[@/*]}. It simply goes by the return value.
It looks like it can easily be fixed with this: diff --git a/subst.c b/subst.c index 4f12f22d..cc9a6803 100644 --- a/subst.c +++ b/subst.c @@ -9245,7 +9245,13 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta } #if defined (ARRAY_VARS) - if (valid_array_reference (name, 0)) + if (want_indir) + { + if (*contains_dollar_at) { + all_element_arrayref = 1; + } + } + else if (valid_array_reference (name, 0)) { int qflags; char *t; -- konsolebox