Linux Shell程式設計(6)——變數替換
變數的名字是它的值儲存的地方。引用它的值稱為變數替換。
$
讓我們仔細地區別變數和變數的值。如果variable1是一個變數的名字,那麼$variable1就是引用這個變數的值――即這個變數它包含的資料。如果只有變數名出現(即指沒有字首$),那就可能是在1)宣告一個變數或是在給這個變數賦值。2)宣告廢棄這個變數,3)匯出(exported)變數,4)或是在變數指示的是一種訊號的特殊情況。(參考例子 29-5)。變數賦值可以使用等於號(=),比如:var1=27。也可在read命令和在一個迴圈的情況下賦值,比如:for var2 in 1 2 3。
在一個雙引號(" ")裡的變數引用不會禁止變數替換。所以雙引號被稱為部分引用,有時也稱為"弱引用"。而在一個單引號裡(' ')的變數替換是被禁止的,變數名只被解釋為普通的字面意思。所以單引號被稱為"全域性引用",有時也被稱為強引用。從第五章可得到更多的細節討論。.
注意$variable實際上只是${variable}的簡單的簡寫形式。在某些場合使用$variable形式會引起錯誤,這時你可能需要使用${variable}的形式了。
例子變數賦值與替換
$
讓我們仔細地區別變數和變數的值。如果variable1是一個變數的名字,那麼$variable1就是引用這個變數的值――即這個變數它包含的資料。如果只有變數名出現(即指沒有字首$),那就可能是在1)宣告一個變數或是在給這個變數賦值。2)宣告廢棄這個變數,3)匯出(exported)變數,4)或是在變數指示的是一種訊號的特殊情況。(參考例子 29-5)。變數賦值可以使用等於號(=),比如:var1=27。也可在read命令和在一個迴圈的情況下賦值,比如:for var2 in 1 2 3。
在一個雙引號(" ")裡的變數引用不會禁止變數替換。所以雙引號被稱為部分引用,有時也稱為"弱引用"。而在一個單引號裡(' ')的變數替換是被禁止的,變數名只被解釋為普通的字面意思。所以單引號被稱為"全域性引用",有時也被稱為強引用。從第五章可得到更多的細節討論。.
注意$variable實際上只是${variable}的簡單的簡寫形式。在某些場合使用$variable形式會引起錯誤,這時你可能需要使用${variable}的形式了。
例子變數賦值與替換
#!/bin/bash
# Variables: 賦值和替換
a=375
hello=$a
#-------------------------------------------------------------------------
# =號的左右兩邊都不能有空白符.
# 如果有一個空白符會怎麼樣?
# 如果用 "VARIABLE =value",
# ^
#+ 指令碼會以為"VARIABLE"是一個命令並且此命令帶了一個引數"=value"。
# 如果用 "VARIABLE= value",
# ^
#+ 指令碼會以為"value"是一個命令,
#+ 並且把環境變數"VARIABLE"賦為空值:""。
#-------------------------------------------------------------------------
echo hello # 沒有引用變數,只是輸出字串 "hello".
echo $hello
echo ${hello} # 這句和上面的一句一樣
echo "$hello"
echo "${hello}"
echo
hello="A B C D"
echo $hello # A B C D
echo "$hello" # A B C D
# 正如你所看到的:echo $hello和echo "$hello"產生不同的輸出。
# ^ ^
# 把變數引起來會保留空白字元.
echo
echo '$hello' # $hello
# ^ ^
# 在單引號中的變數引用會被禁止,
#+ 字元"$"會僅僅被認為是一個普通的字元,而不是變數的字首.
# 注意不同引用的不同效果.
hello= # Setting it to a null value.
echo "\$hello (null value) = $hello"
# 注意具有null值的變數不等同於廢棄(unset)此變數
#+ 雖然最後的結果都是一樣的(看下面的).
# --------------------------------------------------------------
# 在同一行裡用空白字元隔開為多個變數賦值是可以的。
#
# 警告:這可能減少可讀性,並且可能是不可移植的。
var1=21 var2=22 var3=$V3
echo
echo "var1=$var1 var2=$var2 var3=$var3"
# 在老版本的sh中這可能會引起問題
# --------------------------------------------------------------
echo; echo
numbers="one two three"
# ^ ^
other_numbers="1 2 3"
# ^ ^
# 如果給變數賦的值中有空白字元,引號是必須的。
#
echo "numbers = $numbers"
echo "other_numbers = $other_numbers" # other_numbers = 1 2 3
echo
echo "uninitialized_variable = $uninitialized_variable"
# 未初始化的變數具有null值 (即是沒有值).
uninitialized_variable= # 宣告,但沒有初始化它 --
#+ 這就好像上面一樣給它設定一個null 值
echo "uninitialized_variable = $uninitialized_variable"
# 它仍然是null值.
uninitialized_variable=23 # 賦值
unset uninitialized_variable # 銷燬變數.
echo "uninitialized_variable = $uninitialized_variable"
# 結果仍然是null值.
echo
exit 0
相關文章
- Shell程式設計-shell變數1程式設計變數
- Shell變數型別有哪些?linux運維shell程式設計變數型別Linux運維程式設計
- Shell程式設計-02-Shell變數程式設計變數
- shell程式設計–bash變數程式設計變數
- Linux shell程式設計(一)shell指令碼中的變數詳解Linux程式設計指令碼變數
- Shell程式設計-04-Shell中變數數值計算程式設計變數
- Shell程式設計-shell變數2-位置變數和預定義變數程式設計變數
- Shell程式設計規範與變數程式設計變數
- shell程式設計–bash變數介紹程式設計變數
- 01 shell程式設計規範與變數程式設計變數
- 01 shell程式設計之變數定義程式設計變數
- 【Perl程式設計-6】正規表示式--替換+轉化程式設計
- Linux系統程式設計之程式替換:exec 函式族Linux程式設計函式
- Linux Shell變數Linux變數
- Linux之shell程式設計Linux程式設計
- Linux Shell程式設計(1)Linux程式設計
- Linux Shell程式設計(2)Linux程式設計
- shell程式設計02——變數定義與使用程式設計變數
- shell程式設計學習筆記(二):Shell中變數的使用程式設計筆記變數
- Linux之shell變數Linux變數
- Linux系統程式設計之程式控制(程式建立、終止、等待及替換)Linux程式設計
- shell指令碼程式設計學習筆記——變數指令碼程式設計筆記變數
- Linux從入門到精通系列之SHELL程式設計變數與四則運算Linux程式設計變數
- Linux入門---(三)Shell程式設計Linux程式設計
- 前端學習 linux —— shell 程式設計前端Linux程式設計
- 教你如何替換@PathVariable中的變數變數
- 【學習】Linux Shell指令碼程式設計Linux指令碼程式設計
- 如何學習shell程式設計?Linux運維學習shell程式設計是什麼程式設計Linux運維
- linux文字替換Linux
- Linux——程式建立、程式終止、程式等待、程式程式替換Linux
- 【shell程式設計】目錄檔案計數程式設計
- Excel 多個變數替換 實際值Excel變數
- 《Linux系統程式設計訓練營》5_環境變數程式設計Linux程式設計變數
- Linux中bash shell環境變數Linux變數
- Linux基礎之Shell與變數Linux變數
- Linux Shell指令碼程式設計-基礎1Linux指令碼程式設計
- Linux作業系統之Shell程式設計Linux作業系統程式設計
- Linux-shell程式設計入門基礎Linux程式設計
- Linux大資料定製篇 Shell程式設計Linux大資料程式設計