變數替換和測試
變數替換
語法 |
說明 |
---|
${變數名#匹配規則} } |
從變數開頭進行規則匹配,將符合最短的資料刪除 |
${變數名##匹配規則} } |
從變數開頭進行規則匹配,將符合最長的資料刪除 |
${變數名%匹配規則} } |
從變數尾部進行規則匹配,將符合最短的資料刪除 |
${變數名%%匹配規則} } |
從變數尾部進行規則匹配,將符合最長的資料刪除 |
${變數名/舊字串/新字串} } |
變數內容符合舊字串,則第一個舊字串會被新字串取代 |
${變數名//舊字串/新字串} } |
變數內容符合舊字串,則全部的舊字串會被新字串取代 |
[wonbin@localhost ~]$ variable_1="I love you,Do you love me"
[wonbin@localhost ~]$ echo $variable_1
I love you,Do you love me
[wonbin@localhost ~]$ var1=${variable_1#*ov} // 從頭開始,最短匹配
[wonbin@localhost ~]$ echo $var1
e you,Do you love me
[wonbin@localhost ~]$ echo ${variable_1##*ov} // 從頭開始,最長匹配
e me
[wonbin@localhost ~]$ echo ${variable_1%ov*} // 從尾部開始,最短匹配
I love you,Do you l
[wonbin@localhost ~]$ echo ${variable_1%%ov*} // 從尾部開始,最長匹配
I l
wonbin@localhost ~]$ echo $PATH
/usr/local/php/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/go/bin:/usr/local/go/bin:/home/wonbin/.local/bin:/home/wonbin/bin:/home/wonbin/.config/composer/vendor/bin
[wonbin@localhost ~]$ echo ${PATH/bin/BIN} // 單個替換
/usr/local/php/BIN:/usr/local/nginx/sbin:/usr/local/mysql/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/local/go/bin:/usr/local/go/bin:/home/wonbin/.local/bin:/home/wonbin/bin:/home/wonbin/.config/composer/vendor/bin
[wonbin@localhost ~]$ echo ${PATH//bin/BIN} // 全部替換
/usr/local/php/BIN:/usr/local/nginx/sBIN:/usr/local/mysql/BIN:/usr/local/BIN:/usr/BIN:/usr/local/sBIN:/usr/sBIN:/usr/local/go/BIN:/usr/local/go/BIN:/home/wonBIN/.local/BIN:/home/wonBIN/BIN:/home/wonBIN/.config/composer/vendor/BIN
變數測試
變數配置方式 |
str沒有配置 |
str為空字串 |
str 已配置且非空 |
---|
var=${str-expr} |
var=expr |
var= |
var=$str |
字串處理
計算字串長度
|
語法 |
說明 |
---|
方法一 |
${#string} |
無 |
方法二 |
expr length "$string" |
string如有空格,則必須加雙引號 |
[wonbin@localhost ~]$ echo ${#var_str}
11
[wonbin@localhost ~]$ echo `expr length "$var_str"`
11
獲取子串在字串中索引的位置
語法 |
說明 |
---|
expr index $string $substring |
查詢子串中任一出現的字元,找到第一個出現字元的位置就返回 |
查詢字元 u 或 x 的位置(哪個字母先出現就計算哪個):
[wonbin@localhost ~]$ string="everything is just beginning"
[wonbin@localhost ~]$ echo `expr index "$string" ux`
16
計運算元串長度
語法 |
說明 |
---|
expr match $string $substring |
字串左邊從頭開始匹配, |
[wonbin@localhost ~]$ string="did you do exercise today ?"
[wonbin@localhost ~]$ echo `expr match "$string" do`
0
[wonbin@localhost ~]$ echo `expr match "$string" "did you"`
7
[wonbin@localhost ~]$ echo `expr match "$string" did.*`
27
注意:expr index
和 expr match
實際中用的並不是很多
提取字串
|
語法 |
說明 |
---|
方法一 |
${string:position} |
從 string 中的 position 位置開始,索引下標從 0 開始 |
方法二 |
${string:position:length} |
從 position 開始,匹配長度為 length |
方法三 |
${string: -position} |
從右邊開始匹配, 注意冒號後面的空格 |
方法四 |
${string:(position} |
從左邊開始匹配 |
方法五 |
expr substr $string $position $length |
從position開始,匹配長度為length,索引下標從1 開始 |
[wonbin@localhost ~]$ var_str="kubernetes docker cloudNative promethus"[wonbin@localhost ~]$ echo ${var_str: 3}
ernetes docker cloudNative promethus
[wonbin@localhost ~]$ echo ${var_str:3:5} // 方法二, 開始位置3, 長度5
ernet
[wonbin@localhost ~]$ echo ${var_str: -5} // 方法三,冒號後必須加空格
ethus
[wonbin@localhost ~]$ echo ${var_str: -5:3} // 方法三, 帶長度
eth
[wonbin@localhost ~]$ echo ${var_str:-5} // 方法三,冒號後不加空格無效
kubernetes docker cloudNative promethus
[wonbin@localhost ~]$ echo ${var_str:(-5)} // 方法四,冒號後不加空格的話,可以使用括號
ethus
[wonbin@localhost ~]$ echo `expr substr "$var_str" 1 5` // 方法五, 索引從開始1計數
kuber
本作品採用《CC 協議》,轉載必須註明作者和本文連結