歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> grep後加單引號、雙引號和不加引號的區別

grep後加單引號、雙引號和不加引號的區別

日期:2017/3/3 16:39:38   编辑:關於Linux

環境:VirtualBox4.1 + RedHat Linux 6 + Putty0.62

單引號:

可以說是所見即所得:即將單引號內的內容原樣輸出,或者描述為單引號裡 面看到的是什麼就會輸出什麼。單引號''是全引用,被單引號括起的內容不管是 常量還是變量者不會發生替換。

雙引號:

把雙引號內的內容輸出出來;如果內容中有命令、變量等,會先把變量、命 令解析出結果,然後在輸出最終內容來。雙引號""是部分引用,被雙 引號括起的內容常量還是常量,變量則會發生替換,替換成變量內容。

不加引號:

不會將含有空格的字符串視為一個整體輸出, 如果內容中有命令、變量等, 會先把變量、命令解析出結果,然後在輸出最終內容來,如果字符串中帶有空格 等特殊字符,則不能完整的輸出,需要改加雙引號,一般連續的字符串,數字, 路徑等可以用。

使用規則:

一般常量用單引號''括起,如果含有變量則用雙引號""括起。

最大不同:

單引號與雙引號的最大不同在於雙引號仍然可以保有變數的內容,但單引號 內僅能是一般字元,而不會有特殊符號

使用舉例:

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

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

對於字符串,兩者相同

匹配模式也大致相同

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

grep "$a" file #引用變量a,查找變量a的值

grep '$a' file #查找“$a”字符串 ---www.bianceng.cn

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

Copyright © Linux教程網 All Rights Reserved