如何获得我想要的输出?

时间:2019-04-14 04:34:22

标签: tcl

有人可以指出下面我的tcl脚本出了什么问题吗...我是tcl的新手,并试图弄清楚如何获得所需的输出。

我希望“ for循环”打印出descLvds1descLvds2 ... descLvds8的内容,即“ LVDS1回送”,“ LVDS2回送” ...“ LVDS8环回”,但我无法获得所需的输出...这是代码的一部分,问题出在$descLvds$i,我们将提供任何帮助...

set descLvds1 "LVDS 1 loopback"
set descLvds2 "LVDS 2 loopback"
...
set descLvds8 "LVDS 8 loopback"

for {set i 1} {$i < 9 } {incr i} {
    puts "Chan$i $descLvds$i"
}

3 个答案:

答案 0 :(得分:1)

您可以同时使用set来设置变量的值和获取变量的值。要获取具有您从其他变量计算出的名称的变量的值,可以使用变量替换(例如:$i)创建变量名称,然后使用set获取变量的值。该变量。

示例:

for {set i 1} {$i < 9 } {incr i} {
    set varname "descLvds$i"
    puts "Chan$i [set $varname]"
}

如果需要,可以将这两行合并为一:

for {set i 1} {$i < 9 } {incr i} {
    puts "Chan$i [set descLvds$i]"
}

答案 1 :(得分:1)

理想情况下,您对这些变量的命名略有不同,因此您可以使用关联数组元素。那可以让你做到这一点:

set descLvds(1) "LVDS 1 loopback"
set descLvds(2) "LVDS 2 loopback"
...
set descLvds(8) "LVDS 8 loopback"

for {set i 1} {$i < 9 } {incr i} {
    puts "Chan$i $descLvds($i)"
}

确实有效。

答案 2 :(得分:0)

也许这是由于为您的问题制作了一个简短的示例,但是如果输入元素遵循词法顺序(descLvds1descLvds2,...),那么添加附加元素就可以了使用lappendforeach循环到列表:

lappend descLvds "LVDS 1 loopback"
lappend descLvds "LVDS 2 loopback"
# ...
lappend descLvds "LVDS 8 loopback"

foreach descLvd $descLvds {
    puts $descLvd
}