leach中wireless.tcl识别参数
set opt(para) 2;
proc getopt {argc argv} { #读取命令行后面带的参数,如ns test.tcl -para 2 -para 1,有4个参数,argc是 个数,4个,argv是4个参数形成的列表。
global opt #设置opt变量为全局变量
lappend optlist cp nn seed sc stop tr x y
for {set i 0} {$i < $argc} {incr i} {
set arg [lindex $argv $i] #将arg赋值为第i个参数
if {[string range $arg 0 0] != "-"} continue #如果这个参数是第一个字符不是“-”,则略过,继续下一个循环(即,检查下一个 参数);如果是以“-”开始的,那么进行下面操作
set name [string range $arg 1 end] #读出参数名字,赋给name
set opt($name) [lindex $argv [expr $i+1]] #读出下一个argv的值,赋给opt($name)
}
}
getopt $argc $argv
puts $opt(para)
仅作记录。tcl文件中的变量是opt(para),默认值是2.
下面的过程重新定义了变量值,这些值由传入的参数(字符串)设定。
若以上代码保存成test.tcl。那么执行下面一句:
ns test.tcl -para 4
显示结果将是4,而不是2.