簡體   English   中英

關於 tclsh 中的 getopt 和 switch 語句

[英]About getopt and switch-statement in tclsh

我有一個代碼。

如果輸入參數匹配 opt,

然后打印 opt-content

但結果不是我的預期:我該如何解決?

如下我描述:

我輸入:

$ tclsh t.tcl -B bb -O oo

我有:

bb
bb
oo
--------
Non
--------
oo
bb
oo
--------
Non
--------

結果似乎不匹配然后打印默認消息,

但論點似乎被閱讀(替代)正確。

完整代碼


package require cmdline

set parameters {
  {B.arg "" "Build Dir"}
  {O.arg "" "Output Dir"}
}

array set arg [cmdline::getoptions argv ${parameters}]

set requiredParameters {B O } 
foreach iter ${requiredParameters} {
  if {$arg(${iter}) == ""} {
    error "Missing required parameter: -${iter}"
  } else {
    puts $arg(${iter})
    puts $arg(B)
    puts $arg(O)
    puts "--------"
    switch $arg(${iter}) {
      $arg(B) {
        puts $arg(${iter})
      }   
      $arg(O) {
        puts $arg(${iter})
      }   
      default {
        puts "Non"
      }   
    }   
    puts "--------"
  }
}

最后,我在這里得到了解決方案

大括號開關似乎創建了一個新的命名空間,它隔離了外部變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM