命令行参数是否有任何命名约定?

我正在回顾一个命令行驱动的Java应用程序,该应用程序具有命令行开关,如下所示:

myapp aSwitch anotherSwitch aThirdSwitch

我认为所有小写和前导连字符可能更可取:

myapp -aswitch -anotherswitch -athirdswitch

...或者也许:

myapp -a-switch -another-switch -a-third-switch

...或者也许:

myapp --a-switch --another-switch --a-third-switch

但很难想出一个令人信服的理由。希望遵循当前的惯例并跨平台兼容,至少对于Windows / Linux。

感谢关于这些最常用的惯例的建议 - 以及它背后的任何推理。


答案 1

Apache Commons CLI描述了常用的约定。它也是此类用例的良好解析器


答案 2

我主要在Linux上工作,但通常

app -<option1> <option1 value> -<option2> <option2 value> -<option2> <option3 value> 

如果每个选项都有要传递的值或参数

myapp -o1 aSwitch -o2 anotherSwitch -o3 aThirdSwitch