Ошибка Tcl # args: должно быть "set varName? NewValue?" - PullRequest
0 голосов
/ 03 июля 2018

Я попытался запустить следующий Tcl-скрипт и получил ошибку:

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

Что это значит?

Примечание. В сценарий включены термины, относящиеся к программе VMD progra

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

1 Ответ

0 голосов
/ 03 июля 2018

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"

Я не знаю, сработает ли это для вас, но, по крайней мере, мне это кажется нормальным.

...