以下代码
#Create a simulator object
set ns [new Simulator]
#Open the nam trace file
set nf[open out.nam w]
$ns namtrace-all $nf
#Define a 'finish' procedure
proc finish {} {
global ns nf
$ns flush-trace
#Close the trace file
close $nf
#Execute namon the trace file
exec nam–a out.nam&
exit 0
}
#Create two nodes
set n0 [$ns node]
set n1 [$ns node]
#Create a duplex link between the nodes
$ns duplex-link $n0 $n1 1Mb 10ms DropTail
#Call the finish procedure after 5 seconds of simulation time
$ns at 5.0 "finish"
#Run the simulation
$ns run
产生此错误
can't read "nffile5": no such variable
while executing
"set nf[open out.nam w]"
(file "Desktop/sample.tcl" line 4)
这是我第一次参加tcl。那有什么问题呢。 我只是通过这个声明来运行这个:> ns sample.tcl
答案 0 :(得分:2)
您在变量名称后缺少空格:
set nf [open out.nam w]
Tcl非常依赖于正确使用空格。可以在列出here的12条规则中描述整个语言。规则3:“命令的单词由空格分隔(除了换行符,它们是命令分隔符)。”
您的脚本实际发生了什么:
set
和参数nf[open out.nam w]
file5
)。 set
命令以其一个参数nffile5
执行
set
会返回错误。