有谁知道tcl可以轻松解析输入参数的标准软件包?或准备好了吗?(我只有3个标志,但最好是一般性的标志)。
该文档包括一个示例。这是一个简单的示例:
package require cmdline
set parameters {
{server.arg "" "Which server to search"}
{debug "Turn on debugging, default=off"}
}
set usage "- A simple script to demo cmdline parsing"
array set options [cmdline::getoptions ::argv $parameters $usage]
parray options
样品运行:
$ tclsh simple.tcl
options(debug) = 0
options(server) =
$ tclsh simple.tcl -server google.com
options(debug) = 0
options(server) = google.com
$ tclsh simple.tcl -server google.com -debug
options(debug) = 1
options(server) = google.com
$ tclsh simple.tcl -help
simple - A simple script to demo cmdline parsing
-server value Which server to search <>
-debug Turn on debugging, default=off
-help Print this message
-? Print this message
while executing
"error [usage $optlist $usage]"
(procedure "cmdline::getoptions" line 15)
invoked from within
"cmdline::getoptions ::argv $parameters $usage"
invoked from within
"array set options [cmdline::getoptions ::argv $parameters $usage]"
(file "simple.tcl" line 11)
.arg
)。-help
或调用用法/帮助-?
,但是输出效果不佳,请参阅上一个示例运行。我一直在思考用户调用帮助时的消息输出(请参阅上面运行的最后一个示例)。为了解决这个问题,你需要自己捕获错误:
set usage "- A simple script to demo cmdline parsing"
if {[catch {array set options [cmdline::getoptions ::argv $parameters $usage]}]} {
puts [cmdline::usage $parameters $usage]
} else {
parray options
}
样品运行2:
$ tclsh simple.tcl -?
simple - A simple script to demo cmdline parsing
-server value Which server to search <>
-debug Turn on debugging, default=off
-help Print this message
-? Print this message
非常感谢,有什么方法可以声明必需的参数和可选的参数吗?
没有规定指定必需参数的规定-一切都是可选的。您将必须针对默认值测试每个选项,以确定命令行中是否缺少某个选项。
好的,最后一个问题-显示帮助菜单/用法的任何受支持的方法吗?
我进行了更新,删除了
-debug
用于修复帮助输出的默认值...现在,我想知道是否有一种方法可以将布尔参数的默认值设置为1
。该库似乎确实接受使用+debug
语法将此类选项设置为0
。我只是尝试将添加
1
为的默认值debug
,但是默认值仍然是,0
而cmdline将其1
用作帮助描述。我猜测无法为此类参数设置默认值,而是始终为0
。