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

Tcl 如何在列表中增加变量并在foreach循环中使用?,tcl,expect,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> 但我试图获得如下所示的输出: ge1 vlan1 vlan2 vlan3 vlan4 vlan5 ge2 vlan1 vlan2 vlan3 vlan4 vla

我的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>

但我试图获得如下所示的输出:

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

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

我不确定您的预期用途,但这可能会有所帮助

#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
    }
}
#将接口保留为列表
设置接口[列表ge1 ge2 ge3]
#使用vlan值循环每个接口
foreach ge$接口{
卖出$ge
定一个1
而{$a<6}{
将vlan设置为$a
印加
}
}

我们可以用Donal在年提到的另一种方法来实现这一点。但是,我不确定接口和VLAN的数量是否与您的要求不同。如果是的话,我们可以使用一个foreach来覆盖整个输出,而不是两个循环。这个问题可以有多种解决方案。这是一个能满足你需要的样品

incr a
基本上用于增加tcl中的数值。它是否在循环中并不重要。您可能必须更改循环中的逻辑。
for
循环相当于:
for{set a 1}{$a<6}{incr a}{put vlan$a}
#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
    }
}