为什么 shell 解释单引号内的字符?

发布于 2024-12-12 09:29:59 字数 505 浏览 0 评论 0原文

我正在使用 bash shell

$cat test
a --b

$grep '--b' test
grep: option `--b' is ambiguous
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.

$grep "--b" test
grep: option `--b' is ambiguous
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.

$grep '\-\-b' test
a --b

经典的 shell 脚本书籍第 7 章“输入和输出、文件和命令评估”第 7.7 节引用说

“单引号强制 shell 按字面意思处理一对引号之间的所有内容”。

那么为什么上面的单引号不起作用呢?

I am using bash shell

$cat test
a --b

$grep '--b' test
grep: option `--b' is ambiguous
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.

$grep "--b" test
grep: option `--b' is ambiguous
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.

$grep '\-\-b' test
a --b

The classic shell scripting book in chapter 7 "Input and Output,Files, and Command Evaluation" in section 7.7 Quoting says that

"Single quotes force the shell to treat everything between the pair of quotes literally".

Then why is single quotes not working above?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情话已封尘 2024-12-19 09:29:59

shell按字面意思对待它们。但 shell 不负责应用程序如何对待它们。由应用程序决定如何处理作为参数传递的 --b

The shell is treating them literally. But the shell is not responsible for how the application treats them. It is up to the application to decide how it wants to handle the --b passed as an argument.

混浊又暗下来 2024-12-19 09:29:59

大多数 gnu 实用程序都会忽略 -- 之后的 --options,因此您可能需要执行 grep -- --b test。既然您标记了您的问题 linux,那么您很可能拥有 gnu grep。

Most of gnu utilities ignore --options after --, so you may want to do a grep -- --b test instead. And since you tag your question linux, chances are you have gnu grep.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文