我正在尝试构建一个接受一组选项的docopt用法。
Naval Fate.
Usage:
naval_fate.py ship
[-b <b_command>]
[-e <e_command>]
如果我使用它,它工作正常:
ship -b barg -e earg
输出是:
{
"-b": true,
"-e": true,
"<b_command>": "barg",
"<e_command>": "earg",
"ship": true
}
但是如果使用它,它仍然给相应的参数赋予相同的值:
ship -e earg -b barg
输出:
{
"-b": true,
"-e": true,
"<b_command>": "earg",
"<e_command>": "barg",
"ship": true
}
请注意,我将earg传递给-e,但它在输出中被分配给b_command。
我在golang的docopt-go
包中看到了同样的行为。我的用法字符串错了吗?如果是这样,我应该如何构建docopt用法字符串,以便它为正确的参数分配正确的值并尊重指定的参数?
naval_fate.py ship [-b <b_command>] [-e <e_command>]
您编写的docopt的解释如下:
ship
,-b
,
位置论证<b_command>
,
布尔标志-e
,
位置论证<e_command>
。因此,以下所有内容都将被视为合法输入命令:
naval_fate.py ship -e
naval_fate.py ship BB -e
naval_fate.py ship -eb
naval_fate.py ship BB EE
表达像-b <b_command>
和-e <e_command>
这样的标志的正确方法是通过一个名为Options
的部分。
Naval Fate.
Usage:
naval_fate.py ship [options]
Options:
-b <b_command> Description of -b
-e <e_command> Description of -e