next up previous contents
Next: 變數的設定 Up: Shell 變數使用 Previous: 字典陣列   Contents

變數的變化與取代

  1. blkid 列出 /dev/sda1 包含 uuid 的字串訊息
    [dywang@dywH ~]$ blkid /dev/sda1
    /dev/sda1: UUID="716a2ac8-517e-41e4-a139-c2bc12b3dd5f" TYPE="ext4" 
    [dywang@dywH ~]$ uuid=$(blkid /dev/sda1);echo $uuid
    /dev/sda1: UUID="716a2ac8-517e-41e4-a139-c2bc12b3dd5f" TYPE="ext4"
    
  2. 從最前面開始比對,刪除符合的字元。兩個 ## 表示符合的最長的一段,如果僅有一個 # ,表示取『最小的那一段』。
    [dywang@dywH ~]$ uuid=${uuid#*=\"}; echo $uuid
    716a2ac8-517e-41e4-a139-c2bc12b3dd5f" TYPE="ext4"
    [dywang@dywH ~]$ uuid=$(blkid /dev/sda1);echo $uuid
    /dev/sda1: UUID="716a2ac8-517e-41e4-a139-c2bc12b3dd5f" TYPE="ext4"
    [dywang@dywH ~]$ uuid=${uuid##*=\"}; echo $uuid
    ext4"
    
  3. 從後面開始比對,刪除符合的字元。兩個 %% 表示符合的最長的一段,如果僅有一個 % ,表示取『最小的那一段』。
    [dywang@dywH ~]$ uuid=$(blkid /dev/sda1);echo $uuid
    /dev/sda1: UUID="716a2ac8-517e-41e4-a139-c2bc12b3dd5f" TYPE="ext4"
    [dywang@dywH ~]$ uuid=${uuid%%\"*}; echo $uuid
    /dev/sda1: UUID=
    
  4. 取代變數部分字串
    1. blkid 取得 /dev/sda1 的 UUID,存在變數 uuid。
      [dywang@dywH ~]$ uuid=$(blkid /dev/sda1);echo $uuid
      /dev/sda1: UUID="716a2ac8-517e-41e4-a139-c2bc12b3dd5f" TYPE="ext4"
      
    2. 一個斜線 / 將字串變數 uuid 中的等號 "=" 取代成冒號 ":",只取代第一個。
      [dywang@dywH ~]$ uuid=$(blkid /dev/sda1);echo ${uuid/=/:}
      /dev/sda1: UUID:"716a2ac8-517e-41e4-a139-c2bc12b3dd5f" TYPE="ext4"
      
    3. 二個斜線 / 將字串變數 uuid 中的等號 "=" 取代成冒號 ":",取代所有。
      [dywang@dywH ~]$ uuid=$(blkid /dev/sda1);echo ${uuid//=/:}
      /dev/sda1: UUID:"716a2ac8-517e-41e4-a139-c2bc12b3dd5f" TYPE:"ext4"
      
  5. 例題:請取出uuid編號,不含雙引號。



De-Yu Wang 2019-08-23