Tcl:为什么变量没有增加?

时间:2012-02-05 11:49:32

标签: 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_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 ]
} 

非常感谢。

2 个答案:

答案 0 :(得分:8)

应该是

incr times 1 

或只是

incr times  

答案 1 :(得分:5)

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

因此,而不是您想要的incr $times 1

incr times

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