變數
Note from VBird
變數在被
取用
時,前面必須要加上錢字號$
才行, 或者是以${變數}
的方式來取用變數名稱尚未被設定時,預設的內容是『空』的
變數的設定規則
- 變數與變數內容以一個等號
=
來連結:myname=VBird
- 等號兩邊不能直接接空白字元,如下所示為錯誤:
myname = VBird
或myname=VBird Tsai
- 變數與變數內容以一個等號
- 變數名稱只能是英文字母與數字,但是開頭字元不能是數字,如下為錯誤:
2myname=VBird
- 變數內容若有空白字元可使用雙引號
"
或單引號'
將變數內容結合起來,但 雙引號內的特殊字元如 $ 等,可以保有原本的特性var="lang is $LANG"
則echo $var
可得lang is zh_TW.UTF-8
- 單引號內的特殊字元則僅為一般字元 (純文字)
var='lang is $LANG'
則echo $var
可得lang is $LANG
可用跳脫字元『 \ 』將特殊符號(如 [Enter], $, \, 空白字元, '等)變成一般字元,如:
myname=VBird\ Tsai
在一串指令的執行中,還需要藉由其他額外的指令所提供的資訊時,可以使用反單引號`指令`或
$(指令)
。 例如想要取得核心版本的設定:version=$(uname -r)
再echo $version
可得『3.10.0-229.el7.x86_64』# 如何進入到您目前核心的模組目錄? [dmtsai@study ~]$ cd /lib/modules/`uname -r`/kernel [dmtsai@study ~]$ cd /lib/modules/$(uname -r)/kernel # 以此例較佳!
若該變數為擴增變數內容時,則可用
$變數名稱
或${變數}
累加內容,如下所示:PATH="$PATH":/home/bin
或PATH=${PATH}:/home/bin
若該變數需要在其他子程序執行,則需要以 export 來使變數變成環境變數
export PATH
通常大寫字元為系統預設變數,自行設定變數可以使用小寫字元,方便判斷
取消變數的方法為使用
unset
:unset 變數名稱
系統變數
$
:(關於本 shell 的 PID)
- 字號本身也是個變數喔!代表的是『目前這個 Shell的執行緒代號』,亦即是所謂的 PID (Process ID)。
- 想要知道我們的 shell 的 PID ,就可以用:『 echo $$ 』即可!
?
:(關於上個執行指令的回傳值)
- 一般來說,如果成功的執行該指令, 則會回傳一個 0 值
陣列 (array) 變數類型
- 陣列的設定方式是:
var[index]=content
- 『讀取』,一般來說,建議直接以
${陣列}
的方式來讀取
變數內容的刪除、取代與替換
${變數#關鍵字}
若變數內容從頭開始的資料符合『關鍵字』,則將符合的最短資料刪除
${變數##關鍵字}
若變數內容從頭開始的資料符合『關鍵字』,則將符合的最長資料刪除
${變數%關鍵字}
若變數內容從尾向前的資料符合『關鍵字』,則將符合的最短資料刪除
${變數%%關鍵字}
若變數內容從尾向前的資料符合『關鍵字』,則將符合的最長資料刪除
${變數/舊字串/新字串}
若變數內容符合『舊字串』則『第一個舊字串會被新字串取代』
${變數//舊字串/新字串}
若變數內容符合『舊字串』則『全部的舊字串會被新字串取代』