Bash Shell 中變量的符號使用

變量配置方式 說明
${變量#關鍵詞}
${
變量##關鍵詞}
若變量內容從頭開始的數據符合『關鍵詞』,則將符合的最短數據刪除
若變量內容從頭開始的數據符合『關鍵詞』,則將符合的最長數據刪除
${變量%關鍵詞}
${
變量%%關鍵詞}
若變量內容從尾向前的數據符合『關鍵詞』,則將符合的最短數據刪除
若變量內容從尾向前的數據符合『關鍵詞』,則將符合的最長數據刪除
${變量/舊字符串/新字符串}
${
變量//舊字符串/新字符串}
若變量內容符合『舊字符串』則『第一個舊字符串會被新字符串取代』
若變量內容符合『舊字符串』則『全部的舊字符串會被新字符串取代』

底下表格中var 與 str 爲變量,我們要針對 str 是否有配置來決定 var 的值! 一般來說, str: 代表『str沒配置或爲空的字符串時』;至於 str 則僅爲『沒有該變量』。
變量配置方式 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

通配符與特殊符號
符號 意義
* 代表『0 個到無窮多個』任意字符
? 代表『一定有一個』任意字符
[] 同樣代表『一定有一個在括號內』的字符(非任意字符)。例如 [abcd] 代表『一定有一個字符, 可能是 a, b, c, d這四個任何一個』
[ -] 若有減號在中括號內時,代表『在編碼順序內的所有字符』。例如 [0-9] 代表 0 到 9之間的所有數字,因爲數字的語系編碼是連續的!
[^] 若中括號內的第一個字符爲指數符號 (^) ,那表示『反向選擇』,例如 [^abc] 代表 一定有一個字符,只要是非 a, b, c的其他字符就接受的意思。

bash環境中的特殊符號
符號 內容
# 批註符號:這個最常被使用在 script 當中,視爲說明!在後的數據均不運行
\ 跳脫符號:將『特殊字符或通配符』還原成一般字符
| 管線(pipe):分隔兩個管線命令的界定(後兩節介紹);
; 連續命令下達分隔符:連續性命令的界定 (注意!與管線命令並不相同)
~ 用戶的家目錄
$ 取用變量前導符:亦即是變量之前需要加的變量取代值
& 工作控制 (job control):將命令變成背景下工作
! 邏輯運算意義上的『非』 not 的意思!
/ 目錄符號:路徑分隔的符號
>, >> 數據流重導向:輸出導向,分別是『取代』與『累加』
<, << 數據流重導向:輸入導向 (這兩個留待下節介紹)
'' 單引號,不具有變量置換的功能
"" 具有變量置換的功能!
`` 兩個『` 』中間爲可以先運行的命令,亦可使用 $( )
() 在中間爲子 shell 的起始與結束
{} 在中間爲命令區塊的組合!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章