Linux Shell程式設計(10)——引用變數

尹成發表於2014-09-30
當要引用一個變數的值時,一般推薦使用雙引號。使用雙引號除了變數名字首($)、後引符(`)和轉義符(\)外,會使shell不再解釋引號中其它所有的特殊字元。用雙引號時$仍被當成特殊字元,允許引用一個被雙引號引起的變數("$variable"), 那也是說$variable會被它的值所代替。


用雙引號還能使句子不被分割開.一個引數用雙引號引起來能使它被看做一個單元,這樣即使引數裡面包含有空白字元也不會被shell分割開了。
variable1="a variable containing five words"
COMMAND This is $variable1    # 用下面7個引數執行COMMAND命令:

COMMAND "This is $variable1"  # 用下面1個引數執行COMMAND命令:

variable2=""    # 空字串。


COMMAND $variable2 $variable2 $variable2        # 沒有帶引數執行COMMAND 命令
COMMAND "$variable2" "$variable2" "$variable2"  # 用三個含空字串的引數執行COMMAND命令
COMMAND "$variable2 $variable2 $variable2"      # 用一個包含兩個空白符的引數執行COMMAND命令


在echo語句中,只有句子分割和儲存空白符的時候,才需要把引數用雙引號引起來。


單引號(' ')和雙引號類似,但它不允許解釋變數引用,因此,在單引號內的字元$的特殊意思無效了。在單引號內,除了字元',每個特殊字元都只是字面的意思。單引號(全域性引用)比雙引號(部分引用)更嚴格的處理引用部分。

由於在單引號裡的轉義字元(\)也只是被侷限於字面上的意思,所以想在一雙單引號裡再加單引號是不行的。
echo "Why can't I write 's between single quotes"
echo
# The roundabout method.
echo 'Why can'\''t I write '"'"'s between single quotes'
#    |-------|  |----------|   |-----------------------|
# 三個單引號引起的字串之間有一個轉義的單引號和一個由雙引號引起的單引號.



相關文章