Tcl:为什么变量没有得到增量?

Tcl:为什么变量没有得到增量?,tcl,Tcl,我想问的是,为什么下面的代码段不将变量$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_

我想问的是,为什么下面的代码段不将变量
$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 ]
} 
非常感谢。

应该是

incr times 1 
或者干脆

incr times  

在Tcl中,变量的名称是
$times
表示“立即读取
并使用从中读取的值”。当您想要增加一个变量时,您需要告诉increment命令要调整的变量的名称,即,您需要传递
,而不是
变量的内容(这就是
$times
所做的,这意味着传入
0
;一个合法的变量名,但可能不是您想要的;通常不建议将变量名放入变量中,因为这会让程序员头疼)

因此,您需要的不是
incr$乘以1

incr times

1
是可选的;它是增量的默认值。)

也建议从教程中读取此位(也建议读取整个教程)