ここを参照して、getopt
入力オプションを処理するための my を記述します。
次のコマンドでスクリプトを実行します
$ tclsh t2.tcl -O /dir/o -B /dir/b
望ましい結果:
/dir/o, /dir/o, /dir/b
Odir is /dir/o
/dir/o, /dir/o, /dir/b
Bdir is /dir/b
しかし、私はこの間違った結果を得ました
/dir/o, /dir/o, /dir/b
err...
/dir/b, /dir/o, /dir/b
err...
はい、$arg(${i}), $arg(O), $arg(B)
それらの値は問題ないようです。
しかし、ケースの状態に一致することはできません。
コードの何が問題になっていますか?
完全なコード
# filenat2.tcl
package require cmdline
set para {
{O.arg "" "Output Dir"}
{B.arg "" "Build Dir"}
}
array set arg [cmdline::getoptions argv ${para}]
set requiredParameters {O B}
foreach i ${requiredParameters} {
if {$arg(${i}) == ""} {
error "Missing required parameter: -${i}"
} else {
puts "$arg(${i}), $arg(O), $arg(B)" #check
switch $arg(${i}) {
$arg(O) {
puts "Odir is $args(O)"
}
$arg(B) {
puts "Bdir is $args(B)"
}
default {
puts "err..."
}
}
}
}