zsh - associative array wich name is a variable -


i have setup :

typeset -a network network[interface]=eth0,eth1  typeset -a eth0 eth0[dhcp]=yes ... typeset -a eth1 eth1[dhcp]=yes ... 

i want dhcp value each value of network[interface], have setup :

for interfacetocreate in $(echo ${network[interface]/,/ }) ; (some stuff) case ${interfacetocreate[dhcp]} in (some stuff) 

it's don't work normal if try with

${!interfacetocreate[dhcp]} \${${interfacetocreate}[dhcp]} 

i tried eval same result.

by default values of parameters not interpreted further parameter names. ${${foo}} behaves ${foo} (see nested substitutions). behavior can changed parameter expansion flag p. example ${(p)${foo}} evaluate ${foo} , use value name parameter substitution.

so can achieve desired effect this:

typeset -a network eth0 eth1 network[interface]=eth0,eth1 eth0[dhcp]=yes eth1[dhcp]=no  interfacetocreate in ${(s:,:)network[interface]} ;     case ${${(p)interfacetocreate}[dhcp]} in         yes)             print $interfacetocreate dhcp              ;;         *)               print $interfacetocreate no dhcp             ;;     esac done 

this should show

eth0 dhcp eth1 no dhcp 

i suggest using parameter expansion flag s:string: split comma separated list instead of going roundabout way echo , command substitutions.


Comments

Popular posts from this blog

javascript - Clear button on addentry page doesn't work -

c# - Selenium Authentication Popup preventing driver close or quit -

tensorflow when input_data MNIST_data , zlib.error: Error -3 while decompressing: invalid block type -