grep [a-z]和grep'[a-z]'之间有什么区别?

问题描述 投票:0回答:1

最近,我发现使用带/不带引号的grep会返回不同的结果。

grep [a-z] test

返回

插入内容

同时

grep '[a-z]' test

返回

你好

插入内容

再见

#!/ binbash

所以让我感到困惑的是,这两种用法之间有什么区别?

要引用的图案必须

grep
1个回答
0
投票

如果没有引用,shell首先解释[a-z],然后再将其传递给grep

[a-z]被扩展为在工作目录中找到的所有filenames,它们由az之间的一个字母组成。

我敢打赌,如果您执行ls,您会找到一个名称为t的文件(在当前目录中),或仅在“插入内容”中出现的其他字母在其他字符串(文本行)中。如果在您的工作目录中有多个文件,但是恰好一个文件具有一个字母名称,如t,则您的第一个命令将扩展为grep t test

所以-是的,您必须引用您的正则表达式,因此它将按原样传递给grep,并且不由外壳程序处理。

© www.soinside.com 2019 - 2024. All rights reserved.