如何将参数传递给另一个参数

时间:2013-12-10 16:05:43

标签: tcl argument-passing

我想传递一个Argument(键值)并且键内部可能包含类似键(value1 value2 ...)和值可能再次为value1(data1 data2 data2)格式如下所示

proc find {args } {
    array set opt {-find "" }
    if {$opt(-find) == "?" } {
        ....
        puts "list of search items like google, msn"
    }
    if {$opt(-find) == "google" } {
        ....
        puts "...."
    }
}

我正在尝试获取命令

find -find ?
displayresults google, msn....

find -find google
displayresults gmail....

find -find google gmail
results username pw ...

find -find google gmail pw
displayresults ....

1 个答案:

答案 0 :(得分:0)

你想要的是cmdline包裹。这是一个让你入门的小样本。

package require cmdline

proc find {args} {
    set flags {
        {server.arg ""   "Which server to search"}
    }

    array set options [cmdline::getoptions args $flags]

    if {$options(server) eq "google"} {
        puts "Search Google"
    } elseif {$options(server) eq "?"} {
        puts "Display Help"
    }
}

# Example usages    
find -server google one two three  ;# Case 1: $options(server)=="google"
find -server ?                     ;# Case 2: display help
find                               ;# Case 3: no -server flag
find -server "google msn" one two  ;# Case 3: $options(server)=="google msn"

讨论

  • 我打电话给我的国旗-server而不是-find,我认为这更有意义。
  • 如果用户未提供-server标志,则$ options(服务器)为空字符串""
  • 其余案件不言自明。