Shell 變量替換及測試


聲明:$ 后面跟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

  第一種情況:  

           

  第二種情況:

     

  第三種情況:

     

 

忽有所思:有疑惑的地方還是需要去測試、去驗證,否則這個問題在心里永遠是一個謎。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM