shell基礎(六)--字符串和數組


對文本處理,單獨用shell來處理還是比較薄弱。所以shell就引用了awk and sed這兩個命令。我們今天不說這個

一 字符串
  字符串是shell編程中最常用最有用的數據類型,因為你定義一個變量,存的值就是一個字符串,字符串可以用單引號,也可以用雙引號,也可以不用引號

 A=1
name="lottu"
feel='happy'

  說下字符串的處理

1. 拼接字符串
       echo "${name} feels ${feel}"    #即空格就是字符串拼接
2. 求字符串長度 echo ${#name} echo `expr length $name` echo ${name} | awk '{print length($0)}' #awk里面擁有豐富的函數,所以可以完全借鑒於它。
3.截取字符串 echo ${name:1:4} #輸出ottu。下標是從0開始;這跟其他語言不一樣。 expr substr "$name" 1 4 echo ${name}|awk '{print substr($0,2,4)}' #輸出為ottu。
4. index檢索子串--返回第一次出現的位置;若找不到,則返回1 expr index "$name" lo
5. match匹配子串 --返回匹配到子串的長度;若找不到,則返回0 expr match "$name" lott #返回4
6. 替換子串${string/substring/replacement}表示僅替換一次substring相配字符,而${string//substring/replacement}表示為替換所有的substring相配的子串 str="you and me,go your home.OK? you" echo ${str/you/tom} echo ${str//you/tom}

 總結:靈活運用命令expr,以上實現效果都可以用awk來實現。本人對awk很熟悉;大家有什么文本處理的問題,可以找我。


 

  二 數組

bash支持一維數組(不支持多維數組),並且沒有限定數組的大小。類似與C語言,數組元素的下標由0開始編號。獲取數組中的元素要利用下標,下標可以是整數或算術表達式,其值應大於或等於0

1. 定義數組
    在Shell中,用括號來表示數組,數組元素用“空格”符號分割開。定義數組的一般形式為:
    array_name=(value1 ... valuen)
    vname=("lottu" "li0924" "0924" "tom")

2. 打印數組值
    echo ${vname[2]} #輸出"0924" ;大家理解?因為shell數組的下標是從0開始。
    使用使用@ 或 * 可以獲取數組中的所有元素
    echo ${vname[@]}  or echo ${vname[*]}

3.獲取數組長度
    其實跟字符串長度差不多
    echo ${#vname[*]} #輸出為4;數組的個數
    求數組某個下標的值的長度
   echo ${#vname[1]}  #輸出為6

4. 刪除數組
    unset命令
    unset varray_name[n]  :刪除第n+1個
    unset varray_name       刪除數組 varray_name

5. 獲取部分數組--格式:${數組名[@或*]:起始位置:長度}
  $ vname=("lottu" "li0924" "0924" "tom")
  $ echo ${vname[*]:0:2}
     lottu li0924
 
6. 擴展read 命令來定義數組使用參數a
   $ read -p "please input your number: " -a num 
    please input your number: 1 5 6 8
   $ echo ${num[*]}
    1 5 6 8 

 


免責聲明!

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



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