一、變量的使用
用$放在變量前面進行使用,例如:
echo $PATH
為了和別的字符隔開,可以用{}和"",例如
echo ${PATH}nic
echo "$PATH"nic
二、變量的定義規則
1. 變量名稱只能是英文字母與數字,但是開頭字符不能是數字
2. 變量與變量內容以=連結, 等號兩邊不能直接接空格符,如下所示為錯誤: 『myname = VBird』或『myname=VBird Tsai』
3. 變量內容若有空格符可使用雙引號『"』或單引號『'』將變量內容結合起來,但雙引號內的特殊字符如 $ 等,可以保有原本的特性,而單引號內的特殊字符則僅為一般字符 (純文本)
4. 可用\將特殊符號變成一般字符;
5. 在一串指令中,如果還需要由其他指令提供的信息,可以使用反單引號『`指令`』或 『$(指令)』。`是鍵盤上方的數字鍵 1 左邊那個鍵,而不是單引號! 例如想要取得核心版本的設定可以這樣:
echo $version`version=$(uname -r)`
6. 通常大寫字符為系統默認變量,自行設定變量可以使用小寫字符
7. 可以定義數組,用var[index]=content的方式定義
8. 默認定義的是字符串類型,若要定義其他類型需要用declare來定義
declare [-aixr] variable
選項與參數:
-a :將後面名為 variable 的變量定義成為數組 (array) 類型
-i :將後面名為 variable 的發量定義成為整數數字 (integer) 類型
-x :用法與 export 一樣,就是將後面的 variable 變成環境發量;
-r :將發量設定成為 readonly 類型,該發量不可被更改內容,也不能 unset
三、定義環境變量
若變量需要在其他子程序執行,則需要以 export 來使變量變成環境變量:
export PATH
四、取消變量
unset paraname
五、常用環境變量
用env可以列出目前shell環境下的所有環境變量
HOME 代表用戶的家目錄。
SHELL 目前這個環境使用的SHELL 是哪支程序? Linux 默認使用 /bin/bash
HISTSIZE 我們曾經下達過的指令可以被系統記錄下來,而記錄的『筆數』則是由這個值來設定的。
MAIL 當我們使用 mail 指令收信時,系統會去讀取的郵件信箱檔案 (mailbox)。
PATH 就是執行文件搜尋的路徑
LANG 編碼設置
RANDOM 0到32767之間的隨機數
六、用set可以觀察所有變量
$:本 shell 的 PID
echo $$出現的數字就是你的 PID 號碼。
?:上個執行指令的回傳值
如果執行正確則回傳0
七、 變量的更改
變量設定方式 說明
${變量#關鍵詞} 若變量內容從頭開始的數據符合『關鍵詞』,則將符合的最短數據刪除
${變量##關鍵詞} 若變量內容從頭開始的數據符合『關鍵詞』,則將符合的最長數據刪除
${變量%關鍵詞} 若變量內容從尾向前的數據符合『關鍵詞』,則將符合的最短數據刪除
${變量%%關鍵詞} 若變量內容從尾向前的數據符合『關鍵詞』,則將符合的最長數據刪除
${變量/舊字符串/新字符串} 若變量內容符合『舊字符串』則『第一個舊字符串會被新字符串取代』
${變量//舊字符串/新字符串} 若變量內容符合『舊字符串』則『全部的舊字符串會被新字符串取代』
變量設定方式 str 沒有設定 str 為空字符串 str已設定且非空
var=${str-expr} var=expr var= var=$str
var=${str:-expr} var=expr var=expr var=$str
var=${str+expr} var= var=expr var=expr
var=${str:+expr} var= var= var=expr
var=${str=expr} str=expr var=expr str不變 var= str不變 var=$str
var=${str:=expr} str=expr var=expr str=expr var=expr str不變 var=$str
var=${str?expr} expr 輸出至 stderr var= var=$str
var=${str:?expr} expr 輸出至 stderr expr 輸出至 stderr var=$str