我有一个如下所示的数组:
params(ddns_a_servers,sfg) = sfg
params(ddns_a_zone) = dsgfs
params(dhcp_option_encoding,1) = string
params(dhcp_option_id,1) = 1
params(dhcp_option_value,1) = fdsg
params(ddns_bsr_servers,dasf = dasf
params(log) = 1
params(svc_dnsservers) = 1.1.1.1
params(svc_domainname) = rr
我需要提取索引ddns_*_servers
的值。我使用了glob样式匹配和regexp匹配数组名称命令
foreach srv [array names params -regexp ddns_.+_servers,.+]
foreach srv [array names params "ddns_*_servers,*"]
在打印出$ srv后,我得到:
'ddns_a_servers,sfg'
而非'sfg'
我正在获取索引和值。无法理解为什么会这样。我以前曾经使用过这几次,它完美地运作了。我在哪里错了
答案 0 :(得分:2)
那是因为您正在使用[array names ] - 您仍需要根据您拥有的名称从数组中获取值。
array set params {
ddns_a_servers,sfg sfg
ddns_a_zone dsgfs
dhcp_option_encoding,1 string
dhcp_option_id,1 1
dhcp_option_value,1 fdsg
ddns_bsr_servers,dasf dasf
log 1
svc_dnsservers 1.1.1.1
svc_domainname rr
}
foreach name [array names params "ddns_*_servers,*"] {
puts [format "%s => %s" $name $params($name)]
}
ddns_bsr_servers,dasf => dasf
ddns_a_servers,sfg => sfg