在 if 语句中使用 TCL 展开

using TCL expand in if statement

我尝试在 tcl 的 if 语句中使用参数列表的扩展($options)

if {! [runCommandInRepo $componentpath git init {*}$options] } { exit 1 }

但是我收到一条错误消息说有 "extra characters after close-brace"

如何在 if 语句中扩展列表

听起来您使用的 Tcl 版本很旧,可能是 8.4 或更早版本。 Tcl 8.5 中添加了扩展语法。 (不再支持 8.4,仅供参考。)

“修复”是谨慎使用eval

if {! [eval [list runCommandInRepo $componentpath git init] [lrange $options 0 end]] } { exit 1 }

对,就是eval [list …] [lrange … 0 end]保证一切都消除了所有可能的故障模式(或者至少它们会可靠地生成一条很好的错误消息,告诉您到底是什么问题)。

但真的,请升级