Linux 具有复合子选项的命令行选项

Linux 具有复合子选项的命令行选项,linux,command-line,grammar,Linux,Command Line,Grammar,长选项样式如下所示 --key=value 对于类似数组的值,可以轻松扩展此语法 --key=value\ 1,value\ 2,value\ 3 如果每个项目都有子选项,是否有标准方法?也就是说,当每个值都是复合类型时 另一种选择是 --key=[object\ 1],[object\ 2],... 其中,对象的语法指定为特殊的生成值函数。然后,查询键将给出对象的数组。用于指定对象的属性的语法可能类似于JSON或其他东西 另一种选择是完全放弃传统语法,并强制用户将整个命令行作为JSON对

长选项样式如下所示

--key=value
对于类似数组的值,可以轻松扩展此语法

--key=value\ 1,value\ 2,value\ 3
如果每个项目都有子选项,是否有标准方法?也就是说,当每个值都是复合类型时

另一种选择是

--key=[object\ 1],[object\ 2],...
其中,
对象
的语法指定为特殊的
生成值
函数。然后,查询
将给出
对象
的数组。用于指定
对象的属性的语法可能类似于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
或对于Bash中的多个:

--key=value\ {1=42,2=300,3=0}

首先,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
或对于Bash中的多个:

--key=value\ {1=42,2=300,3=0}

据我所知没有。据我所知,您只有两个选择,一个接一个地传递值,或者使用字符串值和数据编码,例如json。我不知道。据我所知,您只有两个选择,一个接一个地传递值,或者使用一个字符串值来编码数据,例如json。首先:我的解析器实际上也接受标准格式。第二(更重要):如果
key
是复合词,那么数组中只能有一个元素,否则会出现歧义
--key=value\1=42--key=value\2=300
可以解释为在同一对象中设置属性
value 1
value 2
,也可以解释为在第一个对象中设置
value 1
,和
值2
在第二个。@user877329:在这一点上,我不清楚您的具体意图。您也许应该在问题中发布一个完整的示例,说明一两个候选语法的确切含义。首先:我的解析器实际上也接受标准形式。第二(更重要):如果
key
是复合词,那么数组中只能有一个元素,否则会出现歧义
--key=value\1=42--key=value\2=300
可以解释为在同一对象中设置属性
value 1
value 2
,也可以解释为在第一个对象中设置
value 1
,和
值2
在第二个。@user877329:在这一点上,我不清楚您的具体意图。你也许应该在你的问题中发布一个完整的例子,说明一两个候选语法的确切含义。