下图来自 POSIX 文档的部分实用程序参数语法。
-g
我的问题是:除了一个使用选项和第二个用作-f
选项 之外,图像中的两个参数形式是否或多或少相同?措辞听起来像一对括号后面的省略号,意味着括号内的参数必须出现至少一次,而不是任意次数。也就是说, 形式的参数是否[-f option_argument]...
等于 形式的参数-f option_argument [-f option_argument]...
,其中两种形式都指定必须出现一个或多个字符串?或者,第一种形式是否指定零次或多次出现,而第二种形式指定一次或多次出现?
答案1
-f arg [-f arg]...
意味着-f arg
必须至少发生一次,但它可能发生多次(“一次然后零次或多次”是另一种说法)。括号指定可选部件命令的命令行语义,省略号表示选项及其选项参数可以重复任意次。一个这样的例子可以在
sed
该实用程序的概要形式之一:sed [-n] -e script [-e script]... [-f script_file]... [file...]
这里,
-e script
必须发生一次,但也可以发生多次。[-g arg]...
意味着-g arg
可能出现零次或多次,即该-g
选项及其选项参数是可选的。-f script_file
上面示例中的选项和选项参数就是这种情况sed
。
这就是图像中的文字试图传达的内容。
如果没有省略号,即[-h arg]
,则意味着它-h arg
是可选的并且一旦在命令行上就会被接受。然后,实用程序可以决定如果用户使用-h arg
多次(-h arg
例如,输出诊断消息,让后面的消息覆盖前面的消息,或者忽略该选项的进一步副本),该怎么办。
这就是上面-n
示例中的工作原理sed
。它是可选的,并且使用-n
多次不会产生任何特殊效果(它被忽略)。