1

我正在编写一个命令行应用程序来加密密码和解密密码哈希。Getopt 的文档没有提供示例,所以我不知道如何使用 Getopt 类。一些线索散落在邮件列表日志中。

特别是,我不知道 的格式with: pattern、指定 CLI 参数的字符串以及值是必需的、可选的还是省略的。

ios7crypt.st:

"exec" "gst" "-f" "$0" "$0" "$@"
"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:静默 drop -e,所以输出看起来像:

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

1 回答 1

1

我建议您在调试时使用#printString。它将提供面向程序员的表示(与#displayString 相反)。

顺便说一句,您可以在 shebang 调用中使用“$@”,以便不加入参数。

于 2011-08-24T10:55:07.947 回答