在grep中使用双引号减号会被视为一个选项

Man*_*ini 2 bash grep

如果我在写作

grep -v "-NO" file
Run Code Online (Sandbox Code Playgroud)

它说

grep:无效选项 - 'N'

所以我需要写grep -v -- "-NO" filegrep -v "\-NO" file.

但是-,如果它是双引号,为什么它会识别为选项呢?

gni*_*urf 6

在将参数传递给grep之前,shell会在名为Quote Removal的步骤中删除引号.另请参阅简单命令扩展.所以,真的,grep永远不会看到这些报价.

  • @koras:您的问题的答案在 OP 中给出:使用 `--` 来标记选项的结尾,例如,`grep -v -- "-NO" file`。`--` 之后的所有内容都不会被 `grep` 解释为选项。 (3认同)