1. 單引號
使用單引號的情況下,不管裡面的是否有變數或者其他的表達是都是原樣子輸出
2. 雙引號
如果其定義變數的時候使用雙引號的話,則裡面的變數或者函式會通過解析,解析完成後再輸出內容,而不是把雙引號中的變數名以及命令原樣子輸出。
3. 不使用引號
用於一些簡單字元數字的定義與雙引號類似
使用規則 | 解釋 |
---|---|
單引號 | 所見即所得,即輸出時會將單引號內的所有內容都原樣輸出,或者描述為單引號裡面看到的是什麼就會輸出什麼,這稱為強引用 |
雙引號 (預設) | 輸出雙引號內的所有內容;如果內容中有命令(要反引下)、變數、特殊轉義符等,會先把變數、命令、轉義字元解析出結果,然後再輸出最終內容,推薦使用,這稱為弱引用 |
無引號 | 賦值時,如果變數內容中有空格,則會造成賦值不完整。而在輸出內容時,會將含有空格的字串視為一個整體來輸出;如果內容中有命令(要反引下)、變數等,則會先把變數、命令解析出結果,然後輸出最終內容;如果字串中帶有空格等特殊字元,則有可能無法完整地輸出,因此需要雙引號替代無引號的情況,特別是對變數賦值時改加雙引號。一般連續的字串、數字、路徑等可以不加任何引號進行賦值和輸輸出,不過最好是用用 |
反引號 | 一般用於引用命令,執行的時候命令會被執行,相當於S0,賦值和輸出都要用“將命令引起來 |
例如
a= demo b='b- $a' c="b- $a" echo $a echo $b echo $c
結果:
demo b- $a b- demo
建議:
1、簡單變數,簡單賦值可以不用""
2.指令碼中宣告變數最好用""
3. 原樣子輸出用''
4.執行命令賦值最好用$()或者``