[英]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.