Bourne shell 中使用者定義的變數

Bourne shell 會辨識可指派字串值的英數變數。

若要指派名稱的字串值,請鍵入:
Name=String

名稱是以底線或字母為開頭之字組的字母、數字和底線的順序排列。 若要使用您已指派給變數的值,請在其名稱開頭加上一個錢幣符號 ($)。 如此,$Name 變數會產生由 String 變數指定的值。 請注意,在指派陳述式中的等號 (=) 兩邊皆不可存有空格。 (位置參數不能出現在指派陳述式中。 您可在一指令行上放置一個以上的指派,但請記得 shell 由右向左來執行指派。

如果您以雙引號或單引號 ("') 括住 字串 變數,則 shell 不會將字串內的空白、定位點、分號及換行字元視為字組定界字元,但它會將它們內嵌在字串中。

如果您以雙引號 (") 括住 字串 變數,則 shell 仍會辨識字串中的變數名稱,並執行變數替代; 也就是說,它會將位置參數的參照以及前面加上錢幣符號 ($) 的其他變數名稱取代為其對應值 (如果有的話)。 shell 亦於雙引號括住的字串內執行指令替代。

如果您以單引號 (') 括住 String 變數,則 shell 不會替換字串內的變數或指令。 下列順序說明這種差異:
You:            num=875
                number1="Add $num"
                number2='Add $num'
                echo $number1
System:         Add 875
You:            echo $number2
System:         Add $num
在變數替代之後,shell 不會重新解譯指派中的空白。 因此,下列指派會導致 $first$second 具有相同的值:
first='a string with embedded blanks'
second=$first
當您參照某個變數時,您可以使用 { } 來括住變數名稱(或指定位置參數的數字),以劃定變數名稱與下列任一字串的界限。 尤其,若緊跟著名稱的字元是字母、數字或底線,而且變數不是位置參數的話,則需要大括弧:
You:            a='This is a'
                echo "${a}n example"
System:         This is an example
You:            echo "$a test"
System:         This is a test