我经常交替听到这两个术语,我想知道它们之间是否有区别,比如标志是用于一个字母的选项还是标志位于一个破折号之后。
答案1
您可能还会发现“参数”、“选项”和“开关”在这种情况下也经常互换使用。
具体来说,“标志”是布尔参数,仅通过包含命令行参数即可设置,无需或允许为参数添加其他数据。如果包含参数/选项/标志,则计为“真”,如果排除它,则计为“假”。
标志类型参数示例:
command.exe -DeleteFiles
非标志参数的示例:
command.exe -ServerName my.server.com
答案2
根据使用 Ruby 2 构建出色的命令行应用程序主要区别在于: aswitch
不接受参数,而 aflag
接受参数。直接引用书中的内容(第 15 页):
通常,如果一个开关是长形式(例如--foo
),用于“打开”某些行为,那么前面还会有另一个开关no-
(例如--no-foo
)用于“关闭”该行为。
最后,长格式标志通过等号获取参数,而短格式标志通常不使用等号。例如,curl
发出 HTTP 请求的命令分别提供短格式和长格式标志来指定 HTTP 请求方法:-X
和--request
。以下示例调用显示了如何正确地将参数传递给这些标志:
curl -X POST http://www.google.com
curl --request=POST http://www.google.com