What's the best way to update a variable indirectly, e.g. when its name is passed to an update function? Since I wrote the functions below some time ago and I've wondered whether there might be a better way. It would be nice if indirect parameter assignment was as easy as indirect parameter access, i.e. if {!name} could be used on the lhs. Values/elements with embedded whitespace must not be broken.
Here are the convenience functions I use now: # simple_set VARIABLE_NAME VALUE... # sets the named variable to the specified value/list simple_set() { local -r name="${1}" ; shift eval "${name}='${*}'" } #simple_array ARRAY_NAME ELEMENT... # sets named variable to an array of the specified elements simple_array() { local -r vals=( "${@:2}" ) eval "$1=(\"\${va...@]}\")" } Now that BASH supports associative arrays I will need to write something to set those indirectly too. Thanks for your suggestions, _Greg J. Greg Davidson