我在TCL脚本中有以下行...
exec {*}$cmd
我理解exec
将运行字符串$cmd
中指定的命令,但无法找到{*}
所做的任何引用....任何人都可以告诉我{ {1}}请不要?
我认为{*}
表示第一项是允许 no 替换的组,因此它会像{...}
中的字符串前缀一样用星号......但这对我没有意义......任何想法的人?
如果我写
$cmd
我得到了
set cmd "ls"
puts {*}$cmd
因此没有打印星号。把任何其他东西放在大括号内,我得到一个错误...可能是一些非常简单的TCL语法,我不知道但是会喜欢指针
答案 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
。