關於grep的引號使用問題


單引號:

所見即所得:即將單引號中內容原樣輸出,也就是單引號''是全引用。

 

雙引號: 

解析式輸出:如果雙引號的內容中有命令、變量等,會先把變量、命令解析成結果,再將結果輸出。雙引號""是部分引用。

  

單雙引號:

 綜上:常量用單引號''括起,而含有變量則用雙引號""括起。單雙可同時出現,單擴住雙。

 

舉例:

 

“”號里面遇到$,\等特殊字符會進行相應的變量替換

‘’號里面的所有字符都保持原樣

對於字符串,兩者相同

匹配模式也大致相同

但有一些區別非常容易混淆

 

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執行的是相同的命令

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM