I've been staring at Chet's message in
http://www.mail-archive.com/bug-bash@gnu.org/msg01545.html
for a while, and now I understand why my own script (doing something
similar) was not originally working.  What I can't quite figure is what
to change.

I'm source'ing a series of assignments of the form
        DIRS_name1=(/foo /bar /baz)
        DIRS_name2=(/qux /quux)
        ....
and earlier in the file, a list of the arbitrary 'name's are assigned.
Running through the list of 'name's and composing the corresponding array
variable name is no trouble, but I can't manage to indirect through to the
entire array.  Like the person I linked to above, I keep ending up with only
the first member of the array:

        v="DIRS_$name"
        declare -a a=${!v}
        # references through a are only scalar

I also tried reconstructing a copy of the array -- I don't care how slow or
inefficient that might be, it's going to be lost in the noise compared to
the real work of the script -- but didn't even get that much:

        v="DIRS_$name"
        declare -a a=( "[EMAIL PROTECTED]" )
        # references through a are empty

The FAQ mentions that indirect expansion and arrays exist, but doesn't give
examples of combining them (granted it's not that FA of a Q).  Staring at
the man page is how I got to where I am.  :-)  I've been looking at the
"advanced scripting guide" but their examples of indirection are all with
strings inside functions.

Any advice would be appreciated.


Reply via email to