我想问你的是,为什么以下代码段不增加变量$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 ]
}
非常感谢。
答案 0 :(得分:8)
应该是
incr times 1
或只是
incr times
答案 1 :(得分:5)
在Tcl中,变量的名称是times
; $times
表示“立即阅读times
并使用从中读取的值”。当你想要增加一个变量时,你需要告诉增量命令要调整的变量的名称,即你需要传递times
而不是times
变量的内容(是$times
所做的,它可以传递0
;一个合法的变量名称,但可能不是你想要的;通常不推荐将变量名放在变量中,因为它往往会让程序员的头疼)。
因此,而不是您想要的incr $times 1
:
incr times
(1
是可选的;它是增量的默认数量。)