如何获得我想要的输出?

How to get the output that I want?

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

我想要 "for loop" 打印出 descLvds1descLvds2 ... descLvds8 的内容,即 "LVDS1 loopback"、"LVDS2 loopback" ... "LVDS8 loopback" 但我无法得到我想要的输出...这是代码的一部分,问题出在 $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"
}

您可以使用 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]"
}

理想情况下,您会以稍微不同的方式命名这些变量,以便您使用关联数组元素。那会让你这样做:

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)"
}

确实有效。

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

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

foreach descLvd $descLvds {
    puts $descLvd
}