2011-08-06 17 views
1

私はパスワードを暗号化し、パスワードハッシュを解読するコマンドラインアプリケーションを書いています。 Getoptのドキュメントには例がないので、Getoptクラスの使い方はわかりません。いくつかの手掛かりがmailing list logsに散在しています。Smalltalkでgetoptが記載されていません

具体的には、with: patternの形式、CLI引数を指定する文字列、値が必須かオプションか省略されているかどうかはわかりません。

ios7crypt.st:

"exec" "gst" "-f" "$0" "$0" "[email protected]" 
"exit" 

| args password hash | 

"Drop the program name." 
"The shebang joins the arguments; we must split them." 
args := (Smalltalk getArgv: 2) substrings: $ . 

args do: [ :arg | Transcript show: 'Raw arg: ', arg; cr. ]. 

Getopt parse: args with: '-e: -d: -t' do: [ :opt :arg | 
    Transcript show: 'Opt: ', (opt asString), ' Arg: ', arg; cr. 

    "..." 
]. 

例の実行:

$ ./ios7crypt.st -e monkey 
Raw arg: -e 
Raw arg: monkey 
Opt: e Arg: monkey 

以前は、-emonkeyの両方がスクリプトに渡されましたが、Getoptののdo:は黙っ-eを落とし、その出力はように見えました:

$ ./ios7crypt.st -e monkey 
Raw arg: -e 
Raw arg: monkey 
Opt: Arg: monkey 
+0

ああ、 – mcandre

答えて

1

デバッグ時に#printStringを使うことをお勧めします。プログラマ指向の表現を提供します(#displayStringとは対照的に)。引数が結合されないように

ところで、あなたはシェバング呼び出しでの「$ @」を使用することができます。 OPTは文字ではなく文字列であり、そのため `トランスクリプトのショーに` `(カンマ)を付加することができません:`。ためである

関連する問題