【问题标题】:Tcl error wrong # args: should be "set varName ?newValue?"Tcl error wrong #args: 应该是“set varName ?newValue?”
【发布时间】:2018-07-03 12:30:53
【问题描述】:

我尝试运行以下 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"                                               

【问题讨论】:

  • 请提供整个错误跟踪,而不仅仅是错误消息。此外,发布的脚本片段似乎不是您实际尝试运行的脚本片段:pkgIndex.tcl 作为命令?

标签: unix tcl vmd


【解决方案1】:

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"

我不知道这是否适合你,但至少在我看来它是正常的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    相关资源
    最近更新 更多