shell字串數組

來源:互聯網
上載者:User

標籤:var   替代   roo   圖片   png   /etc   sel   變數賦值   ide   

數組  聲明數組

    declare -a ARRAY_NAME 

    declare -A ARRAY_NAME: 關聯陣列 

    注意:兩者不可相互轉換 

  數組名和下標(索引)

    索引:編號從0開始,屬於數值索引 

    注意:索引可支援使用自訂的格式,而不僅是數值格式,即為關聯索引, bash4.0版本之後開始支援 

    bash的數組支援稀疏格式(索引不連續) 

數組賦值

      (1) 一次只賦值一個元素 

             ARRAY_NAME[INDEX]=VALUE  weekdays[0]="Sunday"  weekdays[4]="Thursday" 

      (2) 一次賦值全部元素 

            ARRAY_NAME=("VAL1" "VAL2" "VAL3" ...) 

1 filename=(`ls /root/*.sh`)2 3 echo ${filename[@]}4 /root/99.sh /root/a.sh /root/b.sh /root/caluid.sh /root/creat10user.sh /root/diskcheck.sh /root/g1.sh /root/getuserinfo.sh /root/guess.sh /root/selectmenu.sh /root/shift.sh /root/testfor.sh /root/trap.sh /root/whiledf.sh
View Code

     

      (3) 只賦值特定元素 

            ARRAY_NAME=([0]="VAL1" [3]="VAL2" ...) 

      (4) 互動式數組值對賦值   read -a ARRAY 

引用數組

    ${ARRAY_NAME[INDEX]}  注意:省略[INDEX]表示引用下標為0的元素 

    引用數組所有元素: 

         ${ARRAY_NAME[*]}          ${ARRAY_NAME[@]} 

    數組的長度(數組中元素的個數): 

        ${#ARRAY_NAME[*]}         ${#ARRAY_NAME[@]} 

   刪除數組中的某元素:    導致稀疏格式 unset ARRAY[INDEX]

   刪除整個數組: unset ARRAY

數組切片

引用數組中的元素: 

       數組切片:${ARRAY[@]:offset:number}   

        offset: 要跳過的元素個數   

        number: 要取出的元素個數   取位移量之後的所有元素      ${ARRAY[@]:offset}

        向數組中追加元素:  ARRAY[${#ARRAY[*]}]=value 

 

字串

   字串切片的樣本

 1 [[email protected] ~]# str=`echo {a..z}|tr -d " "` 2 [[email protected] ~]# echo $str 3 abcdefghijklmnopqrstuvwxyz 4 [[email protected] ~]# str2=`echo {a..z}` 5 [[email protected] ~]# echo $str2 6 a b c d e f g h i j k l m n o p q r s t u v w x y z 7 [[email protected] ~]# echo ${#str} 8 26 9 [[email protected] ~]# echo ${#str2}10 5111 [[email protected] ~]# echo ${str:3}12 defghijklmnopqrstuvwxyz13 [[email protected] ~]# echo ${str:3:4}14 defg15 [[email protected] ~]# echo ${str: -4}16 wxyz17 [[email protected] ~]# echo ${str: -4:-2}18 wx19 [[email protected] ~]# echo ${str: -4:1}20 w21 [[email protected] ~]# echo ${str: -4:3}22 wxy
View Code

 

  字串模式取子字串

 1 [[email protected] ~]# line=`head -n1 /etc/passwd` 2 [[email protected] ~]# echo $line 3 root:x:0:0:root:/root:/bin/bash 4 [[email protected] ~]# echo ${line#*:} 5 x:0:0:root:/root:/bin/bash 6 [[email protected] ~]# echo ${line##*:} 7 /bin/bash 8 [[email protected] ~]# echo ${line%*:} 9 root:x:0:0:root:/root:/bin/bash10 [[email protected] ~]# echo ${line%:*}11 root:x:0:0:root:/root12 [[email protected] ~]# echo ${line%%:*}13 root14 [[email protected] ~]# disk="/dev/sda3        30G   82M   30G   1% /data"15 [[email protected] ~]# echo $disk16 /dev/sda3 30G 82M 30G 1% /data17 [[email protected] ~]# echo ${disk%% *}18 /dev/sda319 [[email protected] ~]# 
View Code

 

 字串的搜尋替代

    ${var/pattern/substr}:尋找var所表示的字串中,第一次被pattern所匹 配到的字串,以substr替換之 

    ${var//pattern/substr}: 尋找var所表示的字串中,所有能被pattern所匹 配到的字串,以substr替換之 

    ${var/#pattern/substr}:尋找var所表示的字串中,行首被pattern所匹 配到的字串,以substr替換之 

    ${var/%pattern/substr}:尋找var所表示的字串中,行尾被pattern所匹 配到的字串,以substr替換之 

 

  字串的搜尋刪除

     ${var/pattern}:刪除var所表示的字串中第一次被pattern所匹配到的字串 

     ${var//pattern}:刪除var所表示的字串中所有被pattern所匹配到的字串 

     ${var/#pattern}:刪除var所表示的字串中所有以pattern為行首所匹配到的字串 

     ${var/%pattern}:刪除var所表示的字串中所有以pattern為行尾所匹配到的字串

 

  字元大小寫轉換 

     ${var^^}:把var中的所有小寫字母轉換為大寫 

     ${var,,}:把var中的所有大寫字母轉換為小寫 

 

eval命令

    eval    首先會掃描替換命令中的所有變數,然後再去執行替換後的命令

    eval  命令將會首先掃描命令列進行所有的置換,然後再執行該命令.該命令適用於那些一次掃描無法實現其功能的變數.該命令對變數進行兩次掃描 

 1 [[email protected] ~]# n=10 2 [[email protected] ~]# echo {1..$n} 3 {1..10} 4 [[email protected] ~]# eval echo {1..$n} 5 1 2 3 4 5 6 7 8 9 10 6 [[email protected] ~]# CMD=whoami 7 [[email protected] ~]# echo $CMD 8 whoami 9 [[email protected] ~]# eval $CMD10 root11 [[email protected] ~]# 
View Code

 

變數賦值方式

  

shell字串數組

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.