字符串變量切片
${#var}:
返回字符串變量var的長度
${var:offset}:
返回字符串變量var中從第offset個字符後(不包括第offset 個字符)的字符開始,到最後的部分,offset 的取值在0到 ${#var}-1 之間(bash4.2 後,容許爲負值)
${var:offset:number}:
返回字符串變量var中從第offset個字符後(不包括第offset 個字符)的字符開始 ,長度爲number 的部分
${var: -length} :
取字符串的最右側幾個字符
注意:冒號後必須有一空白字符
${var:offset:-length}:
從最左側跳過offset 字符,一直向右取到距離最右側lengh
${var: -length:offset} :
先從最右側向左取到length 個字符開始,再向右取到距離最右側offset 個字符之間的內容
注意:-length 前空格
字符串處理
基於模式取子串
${var
其中word 能夠是指定的任意字符
功能:自左而右,查找var變量所存儲的字符串中,第一次出現的word, 刪除字符串開頭至第一次出現word 字符之間的全部字符
${var
同上,貪婪模式,不一樣的是,刪除的是字符串開頭至最後一次由word 指定的字符之間的全部內容
示例:
file="var/log/messages「 ${file ${file ${var%word*}: 其中word 能夠是指定的任意字符; 功能:自右而左,查找var變量所存儲的字符串中,第一次出現的word, 刪除字符串最後一個字符向左至第一次出現word 字符之間的全部字符; 示例: file="/var/log/messages" ${file%/*}: /var/log ${var%%word*}: 同上,只不過刪除字符串最右側的字符向左至最後一次出現word 字符之間的全部字符; 示例: url=http://www.magedu.com:80 ${url ${url%%:*} http 查找替換 ${var/pattern/substr}: 查找var所表示的字符串中,第一次被pattern 所匹配到的字符串,以substr 替換之 ${var//pattern/substr}: 查找var所表示的字符串中,全部能被pattern 所匹配到的字符串,以substr 替換之 ${var/ 查找var所表示的字符串中,行首被pattern 所匹配到的字符串,以substr 替換之 ${var/%pattern/substr}: 查找var所表示的字符串中,行尾被pattern 所匹配到的字符串,以substr 替換之 查找並刪除 ${var/pattern} : 刪除var所表示的字符串中第一次被pattern 所匹配到的字符串 ${var//pattern}: 刪除var 所表示的字符串中全部被pattern 所匹配到的 字符串 ${var/ 刪除var 所表示的字符串中全部以pattern 爲行首所匹配到的 字符串 ${var/%pattern}: 刪除var 所表示的字符串中全部以pattern爲 爲 行尾所 匹配到的 字符串 字符大小寫轉換 ${var^^}: 把var中的全部小寫字母轉換爲大寫 ${var,,}: 把var中的全部大寫字母轉換爲小寫
字符串變量賦值
${var:-value} 或 ${var-value}:
若是var爲空或未設置,那麼返回value ;不然返回var的值
${var:+value}:
若是var非空,則返回value,不然返回空值
${var:=value}:
若是var爲空或未設置,那麼返回value,並將value 賦值給var ;不然返回var 的值
${var:?error_info}:
若是var爲空或未設置,那麼在當前終端打印error_info ;不然返回var 的值
爲腳本程序使用配置文件, 實現變量賦值
定義文本文件,每行定義「name=value」
在腳本中source 此文件便可
有類型的變量
Shell 變量通常是無類型的,可是bash Shell 提供了declare和typeset兩個命令用於指定變量的類型。
間接變量引用
若是第一個變量的值是第二個的名字,從第一個變量引用第二個變量的值就稱爲間接變量引用。
variable1 的值是variable2 ,而variable2 又是變量名,variable2 的值爲value ,
間接變量引用是指經過variable1得到變量值value的行爲
variable1=variable2
variable2=value
bash Shell 提供了兩種格式實現間接變量引用:
eval tempvar=\$$variable1
tempvar=${!variable1}
示例:
[root@server ~]
[root@server ~]
[root@server ~]
[root@server ~]
wangxiaochun
[root@server ~]
[root@server ~]
wangxiaochun