如何在列表中增加变量并在foreach循环中使用?

时间:2014-09-12 15:36:35

标签: tcl expect

我的TCL脚本如下,

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:\桌面&GT;

但是我想获得如下所示的输出:

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

我想使用上面的TCL脚本只循环vlan。

1 个答案:

答案 0 :(得分: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
    }
}

我们可以通过Donal在here中提到的另一种方法来做到这一点。但是,我不确定接口和vlan的数量是否相同或不符合您的要求。如果是的话,我们可以使用单个foreach来覆盖整个输出而不是两个循环。这个问题可以有多种解决方案。这是一个满足您需求的样本。