带有未知通配符的TCL执行语法



我在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

最新更新