我在TCL脚本中有以下行…
exec {*}$cmd
我理解exec
将运行字符串$cmd
中指定的命令,但找不到{*}
所做的任何参考....谁能告诉我{*}
是做什么的?
我认为{...}
意味着第一项是一个允许不允许替换的组,所以它会像在$cmd
中用星号前缀字符串一样…但这对我来说毫无意义……有什么想法吗?
如果我写
set cmd "ls"
puts {*}$cmd
我ls
不打印星号。把其他东西放在大括号里,我就会得到一个错误…可能是一些非常简单的TCL语法,我不知道,但希望有一个指针
在Tcl中,{*}
将枚举列表中的元素。
例如:
set cmd {$out Stuff}
puts $cmd
# => $out Stuff
puts {*}$cmd
# => can not find channel named "$out"
在这里有文档。
基本上,上面的代码在第一种情况下是puts
- {$out Stuff}
,但在第二种情况下是puts $out Stuff
。当然,如果您现在有一个名为$out
的通道,那么该通道中也会有Stuff
。