On 16 February 2012 08:43, Patrick Lists <fedora-list@xxxxxxxxxxxxxxxxx> wrote: > Hi, > > I am trying to do the following in bash: > > OPTIONS = ( alfa beta gamma ) > SUBOPTIONS_alfa = ( alfa0 alfa1 ) > count=0 > SETCOUNT = ${#SUBOPTIONS_${OPTIONS[$count]}[@]} > > The SETCOUNT line gives a substitution error. I would like the > ${OPTIONS[$count]} to be substituted with alfa so SETCOUNT is: > > SETCOUNT = ${#SUBOPTIONS_alfa[@]} which should equal 2. > > Anyone have an idea how I can make this work? Quick and dirty is fine. I > have already been told that it should be done differently. I appreciate that > but right now I just want to make it work. > Pushing the limits of what can be done with bash, it's just about possible. As you mention this is the point you should consider translating to another language. Anyway... http://stackoverflow.com/questions/4582137/bash-indirect-array-addressing Also N.B. shouldn't be any spaces around those equals signs in your example. OPTIONS=( alfa beta gamma ) SUBOPTIONS_alfa=( alfa0 alfa1 ) SUBOPTIONS_beta=( beta_1 ) SUBOPTIONS_gamma = ( gamma_1 gamma_2 gamma_3 ) count=0 #then... for count in {0..2} ; do nameSUBOPTS=SUBOPTIONS_${OPTIONS[$count]}[@] tmpARR=(${!nameSUBOPTS}) #You need tmpARR, because the '#' expansion wont work with '!' SETCOUNT=${#tmpARR[@]} echo ${OPTIONS[$count]}:$SETCOUNT done Finally, it's spelt 'alpha' ;) -- imalone -- users mailing list users@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe or change subscription options: https://admin.fedoraproject.org/mailman/listinfo/users Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines Have a question? Ask away: http://ask.fedoraproject.org