我是tcl的新手。我有一些疑问,我可以在tcl中循环变量。
我设置了一个名为handle的变量,即
set handle [pcap open -ip 192.168.1.3]
这会创建一个句柄pcap0。我想知道是否可以在tcl中循环这个变量,这样我就可以创建一个十个句柄。
答案 0 :(得分:2)
您有两个选择:列表和数组。
在Tcl中,列表是值,其中包含一系列其他(任意)值。您可以使用lappend
在包含foreach
的变量的列表末尾添加内容,并使用foreach ipaddress {192.168.1.3 192.168.1.4 192.168.1.5 ...} {
lappend handles [pcap open -ip $ipaddress]
}
foreach handle $handles {
# Do something with $handle here
}
遍历列表。
set the_addresses {192.168.1.3 192.168.1.4 192.168.1.5 ...}
foreach ipaddress $the_addresses {
set handle($ipaddress) [pcap open -ip $ipaddress]
}
foreach ipaddress $the_addresses {
# Do something with $handle($ipaddress) here
}
在Tcl中,数组是由关联映射支持的复合变量(您可以查找所需的任何值,不一定是数字)。他们可以很好地使用列表。
{{1}}
哪种选择最好取决于您正在做什么的细节。
答案 1 :(得分:0)
Donal给出了似乎完整的答案,如果IP地址相同,只需:
set handles ""
set ipaddress 192.168.1.3
for {set i 0} {$i < 10} {incr i} {
lappend handles [pcap open -ip $ipaddress]
}
foreach handle $handles {
# Do something with $handle here
}