单引号''是全引用,被单引号括起的内容不管是常量还是变量者不会发生替换;
双引号""是部分引用,被双引号括起的内容常量还是常量,变量则会发生替换,替换成变量内容!
一般常量用单引号''括起,如果含有变量则用双引号""括起!
单引号与双引号的最大不同在于双引号仍然可以保有变数的内容,但单引号内仅能是一般字
元 ,而不会有特殊符号
“”号里面遇到$,\等特殊字符会进行相应的变量替换
‘’号里面的所有字符都保持原样
对于字符串,两者相同
匹配模式也大致相同
但有一些区别非常容易混淆
grep "$a" file #引用变量a,查找变量a的值
grep '$a' file #查找“$a”字符串
grep "\\" file #grep: Trailing backslash(不知原因)
grep '\\' file #查找‘\’字符
1、$ 美元符
2、\ 反斜杠
3、` 反引号
4、" 双引号
这四个字符在双引号中是具有特殊含义的,其他都没有,而单引号使所有字符都失去特殊含义
如果用双引号,查找一个\,就应该用四个\:
grep "\\\\" file 这样就对了,这样等同于:
grep '\\' file
第一条命令shell把四个\,转义成2个\传递给grep,grep再把2个\转义成一个\查找
第二条命令shell没转义,直接把2个\传递给grep,grep再把2个\转义成一个\查找
其实grep执行的是相同的命令。