雙引號
[1] 當要引用一個變量的值時,一般推薦使用雙引號。
[2] 使用雙引號除了變量名前綴($)、後引符(`)和轉義符(\)外,會使shell不再解釋引號中其它所有的特殊字符。
[3] 用雙引號時$仍被當成特殊字符,允許引用一個被雙引號引起的變量("$variable"), 那也是說$variable會被它的值所代替。
[4] 用雙引號還能使句子不被分割開. 一個參數用雙引號引起來能使它被看做一個單元,這樣即使參數裏面包含有空白字符也不會被shell分割開了。
在echo語句中,只有句子分割和保存空白符的時候,才需要把參數用雙引號引起來。
echo aaa 與 echo “aaa”是一樣的
單引號
單引號(' ')和雙引號類似,但它不允許解釋變量引用,因此,在單引號內的字符$的特殊意思無效了。在單引號內,除了字符',每個特殊字符都只是字面的意思。單引號(全局引用)比雙引號(部分引用)更嚴格的處理引用部分。
在命令行上,把感嘆號"!"放在雙引號裏執行命令會出錯(譯者注:比如說:echo "hello!"). 因爲感嘆號被解釋成了一個歷史命令. 然而在一個腳本文件裏,這麼寫則是正確的,因爲在腳本文件裏Bash的歷史機制被禁用了。
在雙號號裏在字符"\"也會引起許多不一致的行爲。
bash$ echo hello\!
hello!
bash$ echo "hello\!"
hello\!
bash$ echo -e x\ty
xty
bash$ echo -e "x\ty"
x y