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執行的是相同的命令
相關文章
- Oracle中單引號和雙引號的區別Oracle
- Linux Shell 單引號 雙引號 使用區別Linux
- shell中定義變數用雙引號和單引號以及不用引號的區別變數
- Golang的單引號、雙引號與反引號Golang
- oracle資料庫--Oracle雙引號和單引號的區別小結Oracle資料庫
- HTML 單引號與雙引號HTML
- 【C進階】14、單引號和雙引號
- awk 技巧之輸出單引號和雙引號
- linux bash中的引號:單雙引號、反撇號Linux
- Linux中單引號和雙引號的使用方法及注意事項!Linux
- latex的雙引號 ``'
- 【轉】cmd中%號和雙引號轉義
- Python函式引數前的單星號(*)和雙星號(**)的作用Python函式
- CSS 單雙引號應用規範CSS
- [20190419]bash單雙引號問題.txt
- python三引號巢狀雙引號執行結果不對Python巢狀
- 瞭解 Oracle 中單引號與雙引號的用法,一篇文章教會你!Oracle
- PHP雙引號的小隱患PHP
- 提取分割單引號 ‘ ‘ 之間的內容且不重複分割單引號 pythonPython
- JS 中函式名後面加與不加括號的區別JS函式
- excel 如何為單元格字串前後批量新增雙引號?Excel字串
- CSV中欄位的去掉雙引號
- PHP 雙引號二次解析PHP
- 變數用雙引號包起來變數
- 一個單引號引發的 MySQL 效能損失MySql
- MySQL 中一個雙引號的錯位引發的血案MySql
- 陣列拆分成單引號逗號隔開的字串陣列字串
- JSON 屬性必須用雙引號JSON
- python中怎麼輸出雙引號Python
- mysqldump 欄位值帶單引號MySql
- 向SQLServer插入單引號問題SQLServer
- PHP中引號的用法PHP
- 常用5號、7號電池型號引數和特性比較
- sql中別名as,不寫,以及使用雙引號總結SQL
- Mysql建表語句中顯示雙引號MySql
- 事故現場:MySQL 中一個雙引號的錯位引發的血案MySql
- JavaScript字串引號巢狀JavaScript字串巢狀
- js獲取帶#號連結後的引數JS
- Python 函式中引數前面一個和兩個星號(**)的區別Python函式