自己写的用来解析命令参数的proc。
proc parse_args {argv {vname ""}} {
upvar $vname opts
set opts(%) [list]
for {set i 0 ; set n [llength $argv] ; set cnt 0 ; set stop false} {$i<$n} {incr i} {
set k [lindex $argv $i]
if {!$stop && [regexp -- {^-\w+$} $k]} {
if {[info exists opts($k)] && $opts($k)=="off"} {
array set opts [list $k on]
} else {
set v [lindex $argv [incr i]] ; array set opts [list $k $v]
}
} elseif {$k == "--" } {
set stop true
} else {
set stop true
set v $k
set k [format "%%%d" [incr cnt]]
array set opts [list $k $v]
lappend opts(%) $v
}
}
return 1
}
### Demo Usage ###
proc t {args} {
array set {} {
-list off
-array off
-size 0
}
parse_args $args
puts [array get {}]
}