2014-09-12 40 views
0

我的TCL腳本如下,如何增加列表中的變量並在foreach循環中使用?

set a 1 
while {$a < 6} { 
    set interface [list ge1 vlan$a ge2 vlan$a ge3 vlan$a] 
    foreach each $interface { 
    puts $each 
    } 
incr a 
} 

現在我得到的輸出,如下圖所示:

C:\Desktop>tclsh loop_through_same_list_increment_variable.tcl 
ge1 
vlan1 
ge2 
vlan1 
ge3 
vlan1 
ge1 
vlan2 
ge2 
vlan2 
ge3 
vlan2 
ge1 
vlan3 
ge2 
vlan3 
ge3 
vlan3 
ge1 
vlan4 
ge2 
vlan4 
ge3 
vlan4 
ge1 
vlan5 
ge2 
vlan5 
ge3 
vlan5 

C:\桌面>

但我試圖讓輸出如圖所示如下:

ge1 
vlan1 
vlan2 
vlan3 
vlan4 
vlan5 
ge2 
vlan1 
vlan2 
vlan3 
vlan4 
vlan5 
ge3 
vlan1 
vlan2 
vlan3 
vlan4 
vlan5 

我想使用上面的TCL腳本只循環vlan的。

+0

'incr a'基本上用於遞增tcl中的數值。無論它是否在循環中都沒關係。你可能不得不改變循環中的邏輯。 – Dinesh 2014-09-12 15:54:12

回答

1

我不知道你的預期目的,但是這可能幫助

#Keeping interfaces as a list 
set interface [list ge1 ge2 ge3] 
#Looping the each interface with vlan values 
foreach ge $interface { 
    puts $ge 
    set a 1 
    while { $a < 6 } { 
     puts vlan$a 
     incr a 
    } 
} 

由多納爾在here提到我們可以用另一種方式做到了這一點。但是,我不確定接口和vlans的數量是否與您的要求不同。如果是的話,我們可以使用一個foreach來覆蓋整個輸出而不是兩個循環。這個問題可以有多種解決方案。這是滿足您需求的一個樣本。

+0

Thanks Dinesh ....這就是我要找的.... – Kumar 2014-09-12 16:56:48

+2

'for'循環相當於:'for {set a 1} {$ a <6} {incr a} {puts vlan $ a} – 2014-09-12 17:20:02