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

use*_*182 0 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 ]
} 
Run Code Online (Sandbox Code Playgroud)

非常感谢.

Don*_*ows 5

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

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

incr times
Run Code Online (Sandbox Code Playgroud)

(这1是可选的;它是增量的默认数量.)