首页 > 解决方案 > Tcl error wrong #args: 应该是“set varName ?newValue?”

问题描述

我尝试运行以下 Tcl 脚本并收到错误:

wrong # args: should be "set varName ?newValue?"

这是什么意思?

注意:该脚本包含特定于 VMD 程序的术语

set dir plugins/noarch/tcl/vmdICE1.0 source $dir pkgIndex.tcl vmd_install_extension vmdICE xrmsdgui_tk_cb "Analysis/vmdICE"                                               

标签: unixtclvmd

解决方案


Tcl 真的很关心换行符。它将它们视为许多其他语言将分号视为命令终止符。(如果你愿意,你也可以在 Tcl 中使用分号,但这并不常见。)

因此,您的脚本:

set dir plugins/noarch/tcl/vmdICE1.0 source $dir pkgIndex.tcl vmd_install_extension vmdICE xrmsdgui_tk_cb "Analysis/vmdICE"                                               

是无可救药的错误。这是一个命令调用,set参数太多。如果我们在最有可能的地方添加换行符,我们会得到:

set dir plugins/noarch/tcl/vmdICE1.0
source $dir pkgIndex.tcl
vmd_install_extension vmdICE
xrmsdgui_tk_cb "Analysis/vmdICE"

现在这仍然是错误的,但它更接近正确。修复的最后一个关键位是使文件名source更正:

set dir plugins/noarch/tcl/vmdICE1.0
source $dir/pkgIndex.tcl
vmd_install_extension vmdICE
xrmsdgui_tk_cb "Analysis/vmdICE"

我不知道这是否对你有用,但至少在我看来它是理智的。


推荐阅读