1

コマンド ライン引数を使用して、正規表現のリストを TCL スクリプトに渡したいと考えています (現在は TCL 8.4 を使用していますが、後で 8.6 を使用する予定です)。現在、私のスクリプトには、-spec正規表現のリストが後に続くように設定できるオプションのフラグがあります。(その他のオプションのフラグもあります。)

したがって、コマンドラインから実行できるようにしたいのは、次のようなことです。

>tclsh84 myscript.tcl /some/path -someflag somearg -spec "(f\d+)_ (m\d+)_" 

そして、私のスクリプトでは、次のようになります。

set spec [lindex $argv [expr {[lsearch $argv "-spec"] + 1}]]
foreach item $spec {
    do some stuff
}

正規表現のリストを渡す部分を除いて、動作しています。上記の方法は、正規表現を渡すには機能しません...ただし、引用符がないと、1 つではなく 2 つの引数のように動作し、中括弧も正しく機能しないようです。より良い解決策はありますか?(私はちょっと初心者です...)

よろしくお願いします。

4

2 に答える 2

0

find、grep、sed などのように、パターンごとに 1 つの -spec を使用します。

set indices [lsearch -all -regexp $argv {^-{1,2}spec$}]
if {[llength $indices] && [expr {[lindex $indices end] + 1}] >= $argc} {
    # bad use
}
foreach index $indices {
    set pattern [lindex $argv [incr index]]
    # ...
}
于 2013-04-06T07:47:45.260 に答える