使用从文件调用的变量时,打印变量名称本身。怎么解决这个?

时间:2014-06-18 14:10:11

标签: tcl expect

我有以下情况:

2000::$var/22    
2000:400::$var/22
2000:800::$var/22    

我想在文本文件中存储以上3行。然后逐个打印,打印1到15,如下所示。

2000::1/22    
2000::2/22    
2000::3/22    
2000::4/22    
2000::5/22    
.
.
.
2000::15/22    

当我从文件导入每一行时,如上所示不打印。它打印变量名称本身如下所示。

2000::$var/22    
2000::$var/22    

请指导我,如何解决此问题。

谢谢, Balu P。

1 个答案:

答案 0 :(得分:2)

TCL有一个名为subst的命令,可以执行您想要的操作。您所要做的就是设置var的值,然后调用subst

set fileHandle [open data.txt]

while {[gets $fileHandle line] != -1} {
    for {set var 1} {$var <= 15} {incr var} {
        puts [subst -nocommand $line]
    }
}

讨论

  • while循环将逐行读取文件,直到文件末尾
  • 在while循环中,我将变量var设置为1 .. 15
  • 然后我打电话给subst进行替换,然后再将其打印出来

更新

根据Glenn Jackman的出色建议,我使用-nocommand更新了代码以防止命令扩展,这可能为恶意代码打开大门。