Positional

位置信息主要与命令目标方法相关:

link:../../../../src/test/java/org/springframework/shell/docs/OptionSnippets.java[role=include]

小心使用位置参数,因为它可能很快就会令人困惑,不知道哪些选项映射到这些参数。

通常当在命令行中定义选项(无论是长选项还是短选项)时,参数会映射到一个选项。一般来说,有 optionsoption argumentsarguments,其中后者没有映射到任何特定选项。

无法识别的参数可能有次要映射逻辑,其中位置信息很重要。通过选项位置,您实际上是在告诉命令解析如何解释纯原始的模棱两可参数。

我们看看当我们不定义位置时会发生什么。

link:../../../../src/test/java/org/springframework/shell/docs/OptionSnippets.java[role=include]

选项 arg1 是必需的,并且没有有关如何处理参数 one 的信息,导致缺少选项的错误。

shell:>arity-strings-1 one
Missing mandatory option --arg1.

现在我们定义一个位置 0

link:../../../../src/test/java/org/springframework/shell/docs/OptionSnippets.java[role=include]

参数将被处理,直到我们获得多达 2 个参数。

shell:>arity-strings-2 one
Hello [one]

shell:>arity-strings-2 one two
Hello [one, two]

shell:>arity-strings-2 one two three
Hello [one, two]