shell 編程數組總結

來源:互聯網
上載者:User

標籤:shell 數組結束

數組總結

目錄:

  1. 數組組成

  2. 數組賦值

  3. 數組輸出

  4. 數組案例

1.數組組成

數組的組成就是一個元素的集合,將多個元素利用一個變數儲存,避免一個元素採用一個變數而導致形成大量的變數,數組構成由數組名(變數)、元素(變數值)和數組下標組,讀取一個數組時採用文法結構為:${變數名[索引編號]},其等價於{$變數名[1]、$變數名[2]..$變數名[n]}。

數組的分類主要分為兩類,第一類是普通數組,普通數組索引編號是連續的,申明普通數組採用文法結構:delcare –a 數組名。第二類是關聯陣列,關聯陣列是索引編號不連續的的數組,申明關聯陣列採用文法結構:declare –A 數組名。

2.數組賦值

變數的複製類似for迴圈中迴圈取值,可以通過多種方式進行賦值,具體方法如下:

方法1:通過小括弧將整數列表直接值賦值給數組

#!/bin/bash

   declare  -a arr                                                            

   arr=( 1 2 3 )                      #將定義整數列表賦值

   for i in {0..2};do

      echo "this is the $i times"

      echo "value=${arr[$i]}"

  done

方法:2:通過命令傳回值進行

[[email protected]  ~/txt]#vim array.sh

#!/bin/bash

   arr=( $(ls /root/txt/) )

   for i in {0..2};do

      echo "this is the $i times"

      echo "value=${arr[$i]}"

  done

[[email protected]  ~/txt]#./array.sh    #執行指令碼則顯示指令碼名稱,僅僅是指令碼名稱而已

this is the 0  times

value=1.txt

this is the 1  times

value=2.txt

this is the 2  times

value=3.txt

    方法3:通過萬用字元進行賦值

[[email protected]  ~/txt]#vim array.sh

#!/bin/bash

declare -a arr1

  arr1=(/root/txt/*.txt)                        #數組賦值檔案,對檔案進行處理

  for j in {0..2};do

      echo "this is the $j times"

      [  -f ${arr1[$j]} ] && echo zunzai || echo bucunzai   #通過數組元素判斷檔案是否存在

      lines=`cat ${arr1[$j]} |wc -l`                        #統計每個檔案的行號

      let sum+=$lines

      echo $sum

      echo "value=${arr1[$j]}"                              #通過數組顯示檔案名稱

  done

[[email protected]  ~/txt]#./array.sh                            #驗證執行結果

this is the 0  times

this is first  txt.word

value=1.txt

this is the 1  times

this is sencond  txt.word

value=2.txt

this is the 2  times

this is three  txt.word

value=3.txt

3.數組輸出

數組相當於一系列的變數元素的集合,在數組輸出時,可以輸出指定的元素、輸出整體的元素和元素的個數:

1.輸出整體的元素,採用文法結構為${變數名[*|@]},其中*|@表示萬用字元任意的意思,因此會輸出所有的元素。

[[email protected]  ~/txt]#intarr=( 1 2 3 )

[[email protected]  ~/txt]#echo ${intarr[*]}

1 2 3

2.輸出指定的元素,採用文法結構為${變數名[索引編號]},其中索引編號從0開始

[[email protected]  ~/txt]#intarr=( 1 2 3 )

[[email protected]  ~/txt]#echo ${intarr[0]}

1

[[email protected]  ~/txt]#echo ${intarr[1]}

2

3.在數組中修改其中某一個陣列變數的元素或增加一個元素,採用文法結構為:變數名[索引編號]=***,當變數的索引編號存在時,覆蓋變數元素原有的值,如若不存在變數的索引編號時,在數組中添加新增的變數元素。

[[email protected]  ~/txt]#intarr[1]=20     #存在索引編號1,因此覆蓋原有值

[[email protected]  ~/txt]#echo ${intarr[1]}

20

[[email protected]  ~/txt]#intarr[3]=40     #不存在索引編號3,因此新增變數值

[[email protected]  ~/txt]#echo ${intarr[*]}

1 20 3 40

4.在數組中將某個元素刪除採用文法結構為:unset 數組[索引編號],刪除整個數組時:unset數組。

[[email protected] ~/txt]#echo ${intarr[*]}    #列印真箇數組

1 20 3 40

[[email protected] ~/txt]#unset intarr[3]      #刪除數組中第4個元素

[[email protected] ~/txt]#echo ${intarr[*]}

1 20 3

[[email protected] ~/txt]#unset intarr         #刪除真箇數組

[[email protected] ~/txt]#echo ${intarr[*]}

    5.在數組中將截取某一段數組元素,文法結構分別為:${數組名[@]:offset:#},offset表示數組位移個數,#表示取位移後的多少個元素。

[[email protected] ~/txt]#intarr=({a..z})                #產生序列

[[email protected] ~/txt]#echo ${intarr[*]}            

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

[[email protected] ~/txt]#echo ${intarr[@]:2:2}     #取第2個元素後面的兩個元素

c d

    6.在數組中將數組某元素替換,文法結構分別為:${數組名[@]/###/***},offset表示數組中元素為###的替換為***,注意替換的是元素。

[[email protected] ~/txt]#echo ${intarr[*]}

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

[[email protected] ~/txt]#echo ${intarr[@]/a/b}                 #匹配數組元素中的a進行替換為b

b 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 

4.數組案例

    1.迴圈列印數組元素,數組包含IP地址:192.168.1.110.1.1.1 172.16.0.1;

#!/bin/bash

declare -a ip_arr

declare -i i=0

declare -i j

ip_arr=(                            #定義數組,數組元素為IP地址,充分說明數組就是變數的集合

      192.168.1.1

      10.1.1.1

      172.16.0.1

 )

###############################################

echo “方法1迴圈列印數組元素

for i in $(seq 0 $[${#ip_arr[*]}-1]);do

      echo ${ip_arr[$i]}

      let i++

done

###############################################

echo "方法2迴圈列印數組元素"

for (( j=0;j<${#ip_arr[*]};j++))

      do

      echo ${ip_arr[$j]}

done

###################將數組作為for迴圈中的元素進行迴圈##########################

echo "方法3數組遍曆列印數組元素"

for n in ${ip_arr[*]};do

      echo $n

done

    

本文出自 “11831715” 部落格,請務必保留此出處http://11841715.blog.51cto.com/11831715/1962177

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.