命令行选项
长选项风格看起来像这样命令行选项
--key=value
这个语法可以很容易地为阵列状值
--key=value\ 1,value\ 2,value\ 3
扩大有如果每一种标准方法项目需要子选项?也就是说,当每个值都是复合类型时?
一个替代方案是
--key=[object\ 1],[object\ 2],...
其中一个object
具有被指定为特殊make_value
功能的语法。然后,查询key
将给出一组object
s。用于指定object
属性的语法可能看起来像JSON或其他。
另一种选择是完全放弃传统语法,强制用户将整个命令行键入为JSON对象。
首先,在GNU系统的标准是不是这样的:
--key=value\ 1,value\ 2,value\ 3 // WRONG
但这:
--key=value\ 1 --key=value\ 2 --key=value\ 3
其中在Bash可以这样写:
--key=value\ {1,2,3}
现在,如果您的值本身是键值对,则单个值的典型用法如下所示:
--key=value\ 1=42
或者多个在击:
--key=value\ {1=42,2=300,3=0}
**第一:**我的解析器实际上也接受标准形式。 **第二个(更重要的):**如果'key'是一个复合词,那么数组中只能有一个元素,否则会有歧义。 '--key = value \ 1 = 42 --key = value \ 2 = 300'可以解释为在同一个对象中设置属性“值1”和“值2”,或者它可以被解释为设置'第一个对象的值为1,第二个对象的值为2。 – user877329
@ user877329:在这一点上我不清楚你在驾驶什么。您应该在您的问题中提供一个完整的,一个或两个候选语法的完整示例,并解释它们究竟意味着什么。 –
不,我知道的。据我所知,您唯一的两个选择是逐个传递值,或者使用字符串值和数据编码的数据。一个json。 –