Tcl:无效的命令名错误
我的tcl代码中有这样一行代码:Tcl:无效的命令名错误,tcl,ns2,Tcl,Ns2,我的tcl代码中有这样一行代码: Application/BitTorrent set seqNo_ $opt(seqNo) …我有一个OTcl类名“Application/BitTorrent”,我得到这个错误 invalid command name "Application/BitTorrent" while executing "Application/BitTorrent set seqNo_ $opt(seqNo)" 无效的命令名“应用程序/BitTorrent” 执行时
Application/BitTorrent set seqNo_ $opt(seqNo)
…我有一个OTcl类名“Application/BitTorrent”,我得到这个错误
invalid command name "Application/BitTorrent"
while executing
"Application/BitTorrent set seqNo_ $opt(seqNo)"
无效的命令名“应用程序/BitTorrent”
执行时
“应用程序/BitTorrent集序号$opt(序号)”
有人能告诉我错误在哪里吗
谢谢 我不想指出明显的错误,但错误正是消息所说的:在抛出错误时,没有名为“Application/BitTorrent”的命令
这可能意味着三件事之一:要么命令名拼写错误,要么命令尚未创建或已被销毁,要么它存在但在当前上下文中不可见(例如,它存在于其他未导入的命名空间或包或文件中)。我不想指出明显的问题,但错误正是消息所说的:在抛出错误时,没有名为“Application/BitTorrent”的命令
这可能意味着以下三种情况之一:命令名拼写错误,命令尚未创建或已被销毁,或者命令存在但在当前上下文中不可见(例如,它存在于其他未导入的命名空间或包或文件中)。例如,您可能实际使用的是
/usr/bin/ns
,而不是在其中编译应用程序代码的应用程序(通常是/ns all-in-one/bin/ns
)。要检查bash下是否存在这种情况,请使用
type ns
如果确实是这样的话,那么在
$PATH
中前面的那一个就意味着bash中的命令hash已经过时了。您可以使用hash-dns
删除旧缓存。除了Bryan Oakey指出的可能性之外,可能是您对脚本运行了一个错误的ns
可执行文件副本。例如,您可能实际使用的是/usr/bin/ns
,而不是在其中编译应用程序代码的应用程序(通常是/ns all-in-one/bin/ns
)。要检查bash下是否存在这种情况,请使用
type ns
如果确实是这样的话,那么在
$PATH
中前面的那一个就意味着bash中的命令hash已经过时了。您可以使用hash-dns
删除旧缓存。感谢您的快速回复!您能告诉我在tcl中创建命令的基本语法吗?我实际上是tcl的新手。tcl中的命令是用proc创建的。您可以返回一个值(任何类型的Tcl变量)。您甚至可以通过定义具有相同名称和范围的proc来替换内置命令,因此请小心。谢谢您的快速回复!您能告诉我在tcl中创建命令的基本语法吗?我实际上是tcl的新手。tcl中的命令是用proc创建的。您可以返回一个值(任何类型的Tcl变量)。您甚至可以通过定义具有相同名称和作用域的proc来替换内置命令,因此请小心