Linux程式設計實務 - Ch7

  • 判斷字串
    echo ${var:+'New_Value'} # 若$var存在,回傳New_Value
    echo ${var:-'New_Value'} # 若$var不存在,回傳New_Value
    echo ${var:='New_Value'} # 若$var為空值,則設為New_Value
    echo ${var:?'New_Value'} # 若$var有問題,回傳New_Value
    echo ${var::'New_Value'} # 若$var空值,回傳New_Value
    
  • 比較取代
    $(var#pattern) # 由前比對,刪最短的
    $(var##pattern) # 由前比對,刪最長的
    $(var%pattern) # 由後比對,刪最短的
    $(var%%pattern) # 由前比對,刪最長的
    ex:
    s="/usr/sbin/ntpdate"
    ${s#/*/} # sbin/ntpdate
    ${s##/*/} # ntpdate
    ${s%/*} # /usr/sbin
    ${s%%/*} # 空
    
  • 字串取代

    格式:
    ${var/pattern/replacement} # 取代第一個
    ${var//pattern/replacement} # 取代全部
    ex:
    act="mail:x:8:8:mail:/var/mail:/bin/sh"
    ${act/:/,} # mail,x:8:8:mail:/var/mail:/bin/sh
    ${act//:/,} # mail,x,8,8,mail,/var/mail,/bin/sh
    
  • 找檔案副檔名

    ${filename##*.}
    
  • printf
    # 格式化字串
    echo $(printf '%04d' 80) # 0080
    # 縮排80pixels
    printf "%*s%s" 80 "OK" # ___(80pixels)___OK
    # 印在螢幕最右
    printf "%${COLUMN}s" "[OK]" # 在shell內要用$(tpus cols)
    # 16進位轉10進位輸出
    printf '%d' 0x15a # 或 echo $((0x15a))
    # 10進位轉16進位輸出
    printf '%x' 346
    

results matching ""

    No results matching ""