On 7/17/18 4:44 PM, Grisha Levit wrote: > The following commands: > > declare -n r=v[0] > v=(X); r=Y > declare -p ${!v*} > printf "%s: <%s>\n" "r" "$r" "v" "$v" > > Will normally produce the following output: > > declare -a v=([0]="Y") > r: <Y> > v: <Y> > > However, if we start bash with `v[0]' already in the environment, such as > with: > > env 'v[0]=' $BASH > > The behavior changes, and the output is: > > declare -a v=([0]="X") > declare -x v[0]="Y" > r: <Y> > v: <X> > > I would expect namerefs to ignore any variables with the literal name > `v[0]' in the environment rather than follow them.
Thanks. Bash needs to better segregate environment variables that aren't valid shell identifiers. Chet -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, UTech, CWRU c...@case.edu http://tiswww.cwru.edu/~chet/