Ошибка tcl неверно # аргументы: следует установить 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"                                               

person azam khezri    schedule 03.07.2018    source источник
comment
Пожалуйста, предоставьте всю трассировку ошибки, а не только сообщение об ошибке. кроме того, опубликованный фрагмент сценария не кажется тем, что вы пытаетесь запустить: pkgIndex.tcl в качестве команды?   -  person mrcalvin    schedule 03.07.2018


Ответы (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"

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

person Donal Fellows    schedule 03.07.2018