grep双引号vs单引号

时间:2014-08-06 01:47:03

标签: regex shell grep

我很惊讶地发现单引号版本与正则表达式一样。 我现在看到的唯一真正的区别是双引号扩展了正则表达式模式中的变量。还有什么我想念的吗?

1 个答案:

答案 0 :(得分:14)

单引号和双引号之间的区别是shell问题, grep问题。在将参数传递给grep之前,shell决定是否进行变量扩展。因为shell处理参数的最后一步是删除引号,grep甚至都看不到引号。

变量扩展不是单引号和双引号之间的唯一区别。 shell还在双引号内执行命令替换和算术扩展。例如:

$ echo "$(date) and 2+2=$((2+2))"
Tue Aug  5 18:52:39 PDT 2014 and 2+2=4
$ echo '$(date) and 2+2=$((2+2))'
$(date) and 2+2=$((2+2))