TCL exec语法与未知的可能通配符?

时间:2014-05-06 10:54:16

标签: tcl

我在TCL脚本中有以下行...

exec {*}$cmd

我理解exec将运行字符串$cmd中指定的命令,但无法找到{*}所做的任何引用....任何人都可以告诉我{ {1}}请不要?

我认为{*}表示第一项是允许 no 替换的组,因此它会像{...}中的字符串前缀一样用星号......但这对我没有意义......任何想法的人?

如果我写

$cmd

我得到了

set cmd "ls"
puts {*}$cmd

因此没有打印星号。把任何其他东西放在大括号内,我得到一个错误...可能是一些非常简单的TCL语法,我不知道但是会喜欢指针

1 个答案:

答案 0 :(得分:3)

在Tcl中,{*}将枚举列表的元素。

例如,考虑:

set cmd {$out Stuff}
puts $cmd
# => $out Stuff
puts {*}$cmd
# => can not find channel named "$out"

记录在案here

基本上,上面的代码在第一种情况下是puts - {$out Stuff},但它在第二种情况下评估puts $out Stuff。当然,如果您现在有一个名为$out的频道,则该频道中会有Stuff