, engine="Sweave", verbose=FALSE, tangle=TRUE, complex key=two words
+ declare -A parms
+ parms[engine]='"Sweave"'
+ parms[verbose]=FALSE
+ parms[tangle]=TRUE
+ parms["complex key"]='two words'
+ parmstring=
+ catarr parms
+ local eval_str
+ printf -v eval_str '
for k in "${!%q[@]}"; do
parmstring+=", $k=${%q[$k]}"
done
' parms parms
+ eval '
for k in "${!parms[@]}"; do
parmstring+=", $k=${parms[$k]}"
done
'
++ for k in "${!parms[@]}"
++ parmstring+=', engine="Sweave"'
++ for k in "${!parms[@]}"
++ parmstring+=', verbose=FALSE'
++ for k in "${!parms[@]}"
++ parmstring+=', tangle=TRUE'
++ for k in "${!parms[@]}"
++ parmstring+=', complex key=two words'
+ catarr 'foo[@]}"); run_an_arbitrary_command; # '
+ local eval_str
+ printf -v eval_str '
for k in "${!%q[@]}"; do
parmstring+=", $k=${%q[$k]}"
done
' 'foo[@]}"); run_an_arbitrary_command; # ' 'foo[@]}"); run_an_arbitrary_command; # '
+ eval '
for k in "${!foo\[@\]\}\"\)\;\ run_an_arbitrary_command\;\ #\ [@]}"; do
parmstring+=", $k=${foo\[@\]\}\"\)\;\ run_an_arbitrary_command\;\ #\ [$k]}"
done
'
./prog.sh: line 24: ${!foo\[@\]\}\"\)\;\ run_an_arbitrary_command\;\ #\ [@]}: bad substitution
+ echo , 'engine="Sweave",' verbose=FALSE, tangle=TRUE, complex key=two words