Arrays 需要通过具有大量索引的tcl数组中的数组名提取值
我有一个如下所示的数组:Arrays 需要通过具有大量索引的tcl数组中的数组名提取值,arrays,regex,tcl,Arrays,Regex,Tcl,我有一个如下所示的数组: 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
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\u*\ u服务器的值
。我在array names命令中使用了glob样式匹配和regexp匹配
foreach srv [array names params -regexp ddns_.+_servers,.+]
foreach srv [array names params "ddns_*_servers,*"]
打印$srv时,我得到:
'ddns\u a\u服务器,sfg'
而不仅仅是'sfg'
我得到了索引和它的值。无法理解这是为什么。我以前用过几次,效果非常好。我在这里出错的地方这是因为您使用的是[array名称]——您仍然需要从给定名称的数组中获取值
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