なぜだめですか:
foreach arg $argv {
$arg
}
そしてそれを次のように実行します./script ABLOCK BLOCK CBLOCK
誰かが を渡すこともできexit
ます。それが望ましくない場合は、有効かどうかを確認してください。
foreach arg $argv {
if {$arg in {ABLOCK BLOCK CBLOCK}} {
$arg
} else {
# What else?
}
}
スイッチの場合、同じことができます(パラメーターが必要ない場合):
proc -V {} {
set ::verbose 1
# Enable some other output
}
スイッチに引数が必要な場合は、次のようにします。
set myargs $argv
while {[llength $myargs]} {
set myargs [lassign $myargs arg]
if {[string index $arg 0] eq {-}} {
# Option
if {[string index $arg 1] eq {-}} {
# Long options
switch -exact -- [string range $arg 2 end]
verbose {set ::verbose 1}
logfile {set myargs [lassign $myargs ::logfile]}
}
} else {
foreach opt [split [string range $arg 1 end] {}] {
switch -exact $opt {
V {set ::verbose 1}
l {set myargs [lassign $myargs ::logfile]}
}
}
}
} else {
$arg
}
}