utility_name[-a][-b][-c option_argument] [-d|-e][-f[option_argument]][operand...]
...最后一个选项和选项参数后面的参数被命名为“操作数”。
这是否意味着根据 POSIX 标准,实用程序的操作数应始终出现在实用程序的所有选项之后?
为什么有些命令或实用程序如果不遵循规则运行就会出错,而另一些则不会?例如:
在 的联机帮助页中
ls
:SYNOPSIS ls [OPTION]... [FILE]...
它显示
[FILE]...
出现在之后[OPTION]...
。但似乎操作数可以出现在选项之前。例如,
ls . -a
工作原理与ls -a .
对于 bash 的builtin
read
,如果我在操作数后面指定选项,则会出错:$ read tt -u 5 5 < /tmp/tt bash: read: `-u': not a valid identifier $ read -u 5 tt 5</tmp/tt $ echo $tt 1 2 3 4 5
答案1
答案2
回答一下标题的问题:
操作数应该出现在选项之后吗?
是的。
他们总是这样吗?
不。
程序如何处理选项和操作数(通常:参数)完全取决于实用程序的开发人员。一些开发人员遵循一些通用规则,其他开发人员遵循其他通用规则。两个最常见的通用规则是 GNU 规则和 POSIX 规则。