Ошибка Tcl # 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"                                               

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"

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

Другие вопросы по тегам