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