單引號(hào):
可以說是所見即所得:即將單引號(hào)內(nèi)的內(nèi)容原樣輸出,或者描述為單引號(hào)里面看到的是什么就會(huì)輸出什么。單引號(hào)''是全引用,被單引號(hào)括起的內(nèi)容不管是常量還是變量者不會(huì)發(fā)生替換。
雙引號(hào):
把雙引號(hào)內(nèi)的內(nèi)容輸出出來;如果內(nèi)容中有命令、變量等,會(huì)先把變量、命令解析出結(jié)果,然后在輸出最終內(nèi)容來。雙引號(hào)""是部分引用,被雙引號(hào)括起的內(nèi)容常量還是常量,變量則會(huì)發(fā)生替換,替換成變量?jī)?nèi)容。
不加引號(hào):
不會(huì)將含有空格的字符串視為一個(gè)整體輸出, 如果內(nèi)容中有命令、變量等,會(huì)先把變量、命令解析出結(jié)果,然后在輸出最終內(nèi)容來,如果字符串中帶有空格等特殊字符,則不能完整的輸出,需要改加雙引號(hào),一般連續(xù)的字符串,數(shù)字,路徑等可以用。
使用規(guī)則:
一般常量用單引號(hào)''括起,如果含有變量則用雙引號(hào)""括起。
最大不同:
單引號(hào)與雙引號(hào)的最大不同在于雙引號(hào)仍然可以保有變數(shù)的內(nèi)容,但單引號(hào)內(nèi)僅能是一般字
元,而不會(huì)有特殊符號(hào)
使用舉例:
“”號(hào)里面遇到$,\等特殊字符會(huì)進(jìn)行相應(yīng)的變量替換
‘’號(hào)里面的所有字符都保持原樣
對(duì)于字符串,兩者相同
匹配模式也大致相同
但有一些區(qū)別非常容易混淆
grep "$a" file #引用變量a,查找變量a的值
grep '$a' file #查找“$a”字符串
grep "\\" file #grep: Trailing backslash(不知原因)
grep '\\' file #查找‘\’字符
1、$ 美元符
2、\ 反斜杠
3、` 反引號(hào)
4、" 雙引號(hào)
這四個(gè)字符在雙引號(hào)中是具有特殊含義的,其他都沒有,而單引號(hào)使所有字符都失去特殊含義
如果用雙引號(hào),查找一個(gè)\,就應(yīng)該用四個(gè)\:
grep "\\\\" file 這樣就對(duì)了,這樣等同于:
grep '\\' file
第一條命令shell把四個(gè)\,轉(zhuǎn)義成2個(gè)\傳遞給grep,grep再把2個(gè)\轉(zhuǎn)義成一個(gè)\查找
第二條命令shell沒轉(zhuǎn)義,直接把2個(gè)\傳遞給grep,grep再把2個(gè)\轉(zhuǎn)義成一個(gè)\查找
其實(shí)grep執(zhí)行的是相同的命令
|