foreach
正如您在问题中所写的那样, 看起来是正确的。(如果还有一个参数,你会从问题标题中得到消息,但你的代码示例不应该生成那个。)ping
你调用的更有可能没有写任何可见的东西,而只是产生结果为字符串。这在 Tcl 代码中很常见。假设我的诊断是正确的,我希望这样的事情能够奏效:
foreach address {
192.168.1.1
192.168.1.2
172.16.224.5
172.16.224.6
192.168.72.1
172.16.224.2
172.16.224.1
10.2.1.1
10.2.2.1
} {
puts [ping $address]
}
为了清楚起见,我省略了提示并添加了缩进和更多换行符。如果ping
确实是外部命令,exec ping $address
请改用(依赖未知命令处理将外部命令引入代码被认为是不好的形式,尤其是在脚本模式下禁用时。)使用外部命令,您可能还想通过带有数字的-c
选项,以便将使用的请求数量限制为相当小的数量,也许:
puts [exec ping -c 5 $address]
请注意,Tcl 解释器支持的命令集可以完全更改(通过设计),并且文档中列出的命令实际上只是预先提供的标准库。当 Tcl 嵌入到像路由器这样的环境中时,很可能事情已经发生了相当大的变化。(对于路由器供应商来说,这并不难。)这意味着肯定会发生命令中的惊人差异,并且您应该检查您拥有的文档并稍微考虑一下,而不是盲目地相信什么我写。