2014-05-06 54 views
2

我有一個TCL腳本以下行...具有未知可能通配符的TCL exec語法?

exec {*}$cmd 

我明白exec將運行串$cmd中指定的命令,但不能找到什麼{*}做任何可以參考....任何人都可以告訴我{*}是什麼請求?

我認爲{...}意味着,第一個項目是與沒有替代允許一組,所以它會像帶星號的前綴字符串中$cmd ...但是這是沒有意義的我。 ..任何想法傢伙?

如果我寫

set cmd "ls" 
puts {*}$cmd 

我得到

ls 

所以並沒有被打印的星號。把大括號內的任何東西,我得到一個錯誤...可能一些非常簡單的TCL語法我不知道,但會讚賞一個指針

回答

3

在Tcl中,{*}將枚舉列表中的元素。

例如,考慮:

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

據記載here

基本上,上面的代碼在第一種情況下是puts -ing {$out Stuff},但它在第二種情況下正在評估puts $out Stuff。當然,如果您現在有一個名爲$out的頻道,您將在該頻道中有Stuff

+0

謝謝,這解釋了它:) – Jimbo