shell中定義變數用雙引號和單引號以及不用引號的區別

lonecloud發表於2018-05-21

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.執行命令賦值最好用$()或者``

相關文章