有人可以指出下面我的tcl脚本出了什么问题吗...我是tcl的新手,并试图弄清楚如何获得所需的输出。
我希望“ for循环”打印出descLvds1
,descLvds2
... 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"
}
答案 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)
也许这是由于为您的问题制作了一个简短的示例,但是如果输入元素遵循词法顺序(descLvds1
,descLvds2
,...),那么添加附加元素就可以了使用lappend
和foreach
循环到列表:
lappend descLvds "LVDS 1 loopback"
lappend descLvds "LVDS 2 loopback"
# ...
lappend descLvds "LVDS 8 loopback"
foreach descLvd $descLvds {
puts $descLvd
}