grep双引号vs单引号

use*_*293 9 regex shell grep

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

Joh*_*024 15

单引号和双引号之间的区别是一个shell的问题,不是一个grep问题.在传递参数之前,shell决定是否进行变量扩展grep.因为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))
Run Code Online (Sandbox Code Playgroud)