在一些手册(包括官方 GNU/Linux 命令行工具 tldp.org )中建议使用单引号(或双引号)以避免 bash 解释通配符或正则表达式符号,如插入符 (^) 和美元 ($) .
但在某些示例中,没有必要使用单引号/双引号。例如:
(1)
$ touch 'fo*'
和
$ touch fo*
在两种命令行形式中创建相同的文件 fo*
。
(2)
$ grep '^foo' file.txt
和
$ grep ^foo file.txt
两者都在 file.txt 行的开头搜索 foo
作为字符串。
如果 bash 实际上不首先解释某些通配符和正则表达式符号,为什么手册建议使用单引号/双引号来避免 bash 解释?
最佳答案
如果当前目录下有一个名为foo
的文件,那么touch 'fo*'
touches fo*
,但是 touch fo*
将扩展为 touch foo
并改为触摸它。
如果设置了 nullglob
选项并且不存在匹配 fo*
的文件名,touch fo*
将扩展为 touch
并提示缺少操作数。
如果设置了 failglob
选项并且不存在匹配 fo*
的文件名,touch fo*
将立即导致错误。
关于linux - 为什么 bash 文档建议引用通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38152760/