尝试将命令的输出重定向到变量

时间:2013-02-15 20:25:33

标签: tcl

>> set signal_name [get_fanout abc_signal]
{xyz_blah_blah}
>> echo $signal_name
@142
>> set signal_name [get_fanout abc_signal]
{xyz_blah_blah}
>> echo $signal_name
@144
>>

我尝试了其他东西,比如catch等,而且每个地方都会返回@number。我的目标是能够打印实际值而不是数字 - xyz_blah_blah。

我是tcl的新手。想要了解,如果这是一个数组或指向数组的指针或类似的东西。当我尝试使用不同的命令完全相同的东西,它只返回一个值,然后它的工作原理。这是一个在括号中返回值的新命令。

请帮忙。感谢。

1 个答案:

答案 0 :(得分:0)

每个Tcl命令都会生成一个结果值,您可以通过将命令调用[方括号]并将整个批次作为一部分来捕获和使用该值另一个命令的参数。因此,在:

set signal_name [get_fanout abc_signal]

调用get_fanout的结果用作set的第二个参数。我建议您也可以尝试这样做:

puts "-->[get_fanout abc_signal]<--"

它是一样的,除了这次我们将它与其他一些小字符串串联并打印出整个批次。 (如果你想知道,如果没有错误,puts本身的结果总是空字符串,set返回变量的内容。)

如果仍然打印错误的值(以及正确的值,周围没有箭头标记),真正的问题可能是get_fanout没有按照您的预期进行操作。虽然它是possible to capture the standard output of a command,但这样做是一种相当先进的技术;考虑是否有替代机制来实现您想要的东西可能更好。 (get_fanout命令不是Tcl语言库的标准部分或任何非常常见的附加库,如Tk或Tcllib集合,因此我们只能猜测它的行为。)

相关问题