聲明:$ 后面跟linux可執行命令
一、變量替換
語法 | 說明 |
${變量名#匹配規則} | 從變量的開頭進行規則匹配,將符合最短的數據刪除 |
${變量名##匹配規則} | 從變量的開頭進行規則匹配,將符合最長的數據刪除 |
${變量名%匹配規則} | 從變量的尾部進行規則匹配,將符合最短的數據刪除 |
${變量名%%匹配規則} | 從變量的尾部進行規則匹配,將符合最長的數據刪除 |
${變量名/舊字符串/新字符串} | 變量內容包含舊字符串,則第一個舊字符串被新字符串取代 |
${變量名//舊字符串/新字符串} | 變量內容包含舊字符串,則全部的舊字符串被新字符串取代 |
例1 :
定義變量:$ var_1="I love you, Do you love me"
輸出變量:$ echo $var_1
打印結果:I love you, Do you love me
測試1:從頭匹配最短刪除
$ var_11=${var_1#*ove} // * 表示匹配任意字符
$ echo $var_11
打印結果:you, Do you love me // 注意開頭的空格被去掉了。
測試2: 從頭匹配最長刪除(貪婪模式)
$ var_12=${var_1##*ove} // * 表示匹配任意字符
$ echo $var_12
打印結果:me // 注意開頭的空格被去掉了。
測試3: 從后匹配最短刪除
$ var_13=${var_1%ov*}
$ echo $var_13
打印結果:I love you, Do you l
測試4: 從后匹配最長刪除(貪婪模式)
$ var_14=${var_1%%ov*}
$ echo $var_14
打印結果:I l // 大寫的 i 和 小寫的 L
測試5: 替換第一個舊字符串
$ var_15=${var_1/love/LOVE}
$ echo $var_15
打印結果:I LOVE you, Do you love me
測試6: 替換全部的舊字符串
$ var_16=${var_1//love/LOVE}
$ echo $var_16
打印結果:I LOVE you, Do you LOVE me
二、變量測試
變量測試不常用,實際編程中 if else 就可以取代變量測試。上面的 str沒有配置 == str沒有定義。expr是字符串,並不是變量。
舉個例子:
對於 var=${str-expr} :如果 str 沒有配置,則 var=expr; 如果 str="",則 var=""; 如果 str 定義了且不為空,則 var=$str
第一種情況:
第二種情況:
第三種情況:
忽有所思:有疑惑的地方還是需要去測試、去驗證,否則這個問題在心里永遠是一個謎。