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
是可选的;它是增量的默认值。)也建议从教程中读取此位(也建议读取整个教程)