Bash中的單雙引號用法,看完你就真的懂了

雙引號與單引號解讀
我沒有完整看完過關于介紹bash或Linux的書籍,教程倒是看了好些個。這些書或視頻對于Linux,Bash中的單、雙引號,很多都只是流于表面的說明,用一些什么強引用,弱引用類的術語,聽起來好像是懂了,實際一用起來就一個頭兩個大。
最近整理筆記時看到關于bash引號的內(nèi)容,檢討了下我自己,也時常摸不清頭腦到底怎么使用引號,什么時候用,什么時候不用,有時用了起反效果,于是就有了這篇博文。
白嫖過[馬哥教育](https://www.magedu.com/)的視頻,受益匪淺。
再此也十分感謝[駿馬金龍](https://junmajinlong.com/),讓我收獲良多。
由于本文使用了大量的單雙引號,導致代碼塊不能正確解析,所以有部分代碼高亮會失效。
單雙引號使用規(guī)則:
一般字面常量用單引號''括起;如果含有變量,且我們需要使用該變量的值,則用雙引號""括起;要么就不加引號,直接暴露給bash解析。
1. 在單引號所有字符都將失去特殊含義。
2. 在雙引號只有這些字符中是具有特殊含義的,也就說是"{1..3}","((1+2))",這些出現(xiàn)在雙引號內(nèi),都將視為普通字串。
$ 美元符
\ 反斜杠 相當與也是一次解析
?` 反引號
! 嘆號
不加引號:
如果內(nèi)容中有命令、變量等,會先把變量,命令解析出結果,且不會將含有空格的字符串視為一個整體,然后輸出最終內(nèi)容來。即是說如果有空格,那么很大幾率不會得到你想要的結果,所以說為什么不管三七二十一,都推薦加上引號的原因就在這。
單引號:
可以說是所見即所得;即將單引號內(nèi)的內(nèi)容原樣輸出,或者說單引號里面看到的是什么,就會輸出什么,
另外,單引號自身也會配對,**如果單引號已經(jīng)解析完成,不會再次組合解析**
雙引號:
把雙引號內(nèi)的內(nèi)容解析并輸出;如果內(nèi)容中有命令、變量等,會先把變量、命令解析出結果,然后最終輸出內(nèi)容。
雙引號會保留格式不變
雙引號保留雙引號
另外在類似sed,awk一些命令中本身具有特殊符號, 在bash解析命令行時成生的命令有所沖突。
sed
awk
awk輸出既有雙引號又有單引號
探索性實驗,實現(xiàn)引號自由!?。?/span>
使用雙引號開頭,實現(xiàn)awk輸出: "It's good."

雖然是有些費力不討好,但能夠更清楚的了解`bash`解析時,到底發(fā)生了些什么。
這次的探索總體上來說還是非常值得的。