2012-02-05 2 views
0

내가 물어보고 싶은 것은 왜 다음 코드 단편이 이 아니며 변수가 $times가 증가합니까?Tcl : 변수가 증가하지 않는 이유는 무엇입니까?

#!/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 ] 
} 

감사합니다.

답변

8

그것은

incr times 1 

티클 또는 단순히

incr times 
5

있어야 변수의 이름은 times이고; $times은 "지금 times을 읽고 그 값을 사용하십시오"를 의미합니다. 변수를 증가 시키려면 increment 명령에 조정할 변수의 이름을 알려야합니다. 즉, times 변수의 내용이 아닌 times을 전달해야합니다 ($times의 내용) 0을 전달해야합니다. 합법적 인 변수 이름이지만 원하는 것은 아닐 수도 있으므로 변수 이름을 변수에 넣는 것이 프로그래머의 머리를 아프게하는 경향이 있으므로 일반적으로 권장되지 않습니다.

따라서, 대신 incr $times 1의 당신이 원하는 :

incr times 

합니다 (1는 선택 사항입니다,으로 증가 할 기본 금액입니다.)

+1

자습서는 HTTP를 추천에서이 비트를 읽기 : // www가 .tcl.tk/man/tcl8.5/tutorial/Tcl2.html (튜토리얼 전체를 읽는 것도 좋습니다.) – kostix

관련 문제