Re: OT: Bash arrays & indirection?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 16-02-12 12:13, Ian Malone wrote:
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

I missed that one. Good link.

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

Thanks! I will try it out. It looks more sane that what I found myself which apparently is challenging the bash gods to unleash their wrath if I use it:

eval SETCOUNT=\${#SUBOPTIONS_${OPTIONS[$count]}[@]}

Finally, it's spelt 'alpha' ;)

Heh spelt or spelled? :) Actually I was thinking about the cars but thought alfa bentley corvette was lame so went with alfa beta and gamma.

Thank you for helping out.

Cheers,
Patrick
--
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


[Index of Archives]     [Older Fedora Users]     [Fedora Announce]     [Fedora Package Announce]     [EPEL Announce]     [EPEL Devel]     [Fedora Magazine]     [Fedora Summer Coding]     [Fedora Laptop]     [Fedora Cloud]     [Fedora Advisory Board]     [Fedora Education]     [Fedora Security]     [Fedora Scitech]     [Fedora Robotics]     [Fedora Infrastructure]     [Fedora Websites]     [Anaconda Devel]     [Fedora Devel Java]     [Fedora Desktop]     [Fedora Fonts]     [Fedora Marketing]     [Fedora Management Tools]     [Fedora Mentors]     [Fedora Package Review]     [Fedora R Devel]     [Fedora PHP Devel]     [Kickstart]     [Fedora Music]     [Fedora Packaging]     [Fedora SELinux]     [Fedora Legal]     [Fedora Kernel]     [Fedora OCaml]     [Coolkey]     [Virtualization Tools]     [ET Management Tools]     [Yum Users]     [Yosemite News]     [Gnome Users]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [Fedora Sparc]     [Libvirt Users]     [Fedora ARM]

  Powered by Linux