Answers:
你是对的。来自man bash:
-c string
如果-c存在该选项,则从中读取命令string。如果在后面有参数,则将string它们分配给位置参数,以开头$0。
这意味着bash -c 'echo $0' -l回报-l。
Unix命令中的约定是文件名排在最后(因为许多命令可以使用几乎无限数量的文件名)。换句话说,看起来不像标志/选项的第一件事被解释为filename [1],其后的所有内容也被解释为。
[1]如果使用以破折号开头的文件,则可以通过两种方式消除歧义:
./-foo代替-foo:rm ./-foobarrm -- -foobar。好的脚本编码惯例建议--在未预先确定文件名的命令中使用“ fence”。
bash -c需要一些东西。(2)必需的参数bash -c可能不是文件(通常是命令),并且行为相同,这更多是约定不适用于此处的原因。(3)比较grep -f。它需要一个文件名,并且不会影响后面的选项。实际上,这是更常见的行为,bash -c非常独特。(4)您没有回答问题。