我想问你的是,为什么下面的代码片段并没有增加变量$times?
#!/usr/bin/tclsh
set logging {
LC/0/1/CPU0:Jan 27 08:24:17.014 CET: ifmgr[175]: %PKT_INFRA-LINK-3-UPDOWN : Interface GigabitEthernet0/1/0/33, changed state to Down
LC/0/1/CPU0:Jan 27 08:24:17.014 CET: ifmgr[175]: %PKT_INFRA-LINEPROTO-5-UPDOWN : Line protocol on Interface GigabitEthernet0/1/0/33, changed state to Down
}
set times 0
set records [ split $logging "\n" ]
foreach rec $records {
puts $rec
incr $times 1
puts $times ;# puts [ incr $times 1 ]
}
Run Code Online (Sandbox Code Playgroud)
非常感谢.
它应该是
incr times 1
Run Code Online (Sandbox Code Playgroud)
或者干脆
incr times
Run Code Online (Sandbox Code Playgroud)
在Tcl中,变量的名称是times; $times表示"立即读取times并使用从中读取的值".当你想增加一个变量,你需要告诉增量命令的变量的名称进行调整,即,你需要传递times,而不是内容times的变量(这是什么$times呢,这工程以传递0中;一个合法的变量名称,但可能不是你想要的;通常不推荐将变量名称放在变量中,因为它往往会让程序员头疼.
因此,而不是incr $times 1你想要的:
incr times
Run Code Online (Sandbox Code Playgroud)
(这1是可选的;它是增量的默认数量.)