shell指令碼編程之數組

來源:互聯網
上載者:User

標籤:shell 數組


變數:儲存單個元素的記憶體空間;

數組:儲存多個元素的連續的記憶體空間;

數組名:整個數組只有一個名字;

數組索引:編號從0開始;

數組名[索引], 

    ${ARRAY_NAME[INDEX]}

關聯陣列:

注意:bash-4及之後的版本,支援自訂索引格式,而不僅僅是0,1,2,...數字格式;

此類數組稱之為“關聯陣列”

聲明數組:

    declare  -a  NAME:聲明索引數組;

    declare  -A  NAME:聲明關聯陣列;

數組中元素的賦值方式:

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

    ARRAY_NAME[INDEX]=value

(2) 一次賦值全部元素;

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

(3) 只賦值特定元素;

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

    注意:bash支援稀疏格式的數組;

(4) read  -a  ARRAY_NAME

引用數組中的元素:${ARRAY_NAME[INDEX]}

注意:引用時,只給數組名,表示引用下標為0的元素;

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

    ${#ARRAY_NAME[*]}

    ${#ARRAY_NAME[@]}

樣本:產生10個隨機數,並找出其中的最大值和最小值;

#!/bin/bash#declare -a  randdeclare -i max=0for i in {0..9}; do    rand[$i]=$RANDOM    echo ${rand[$i]}    [ ${rand[$i]} -gt $max ] && max=${rand[$i]}doneecho "MAX: $max"

 

練習:寫一個指令碼

定義一個數組,數組中的元素是/var/log目錄下所有以.log結尾的檔案;統計其下標為偶數的檔案中的行數之和;

#!/bin/bash#declare -a filesfiles=(/var/log/*.log)declare -i lines=0for i in $(seq 0 $[${#files[*]}-1]); do    if [ $[$i%2] -eq 0 ]; then        let lines+=$(wc -l ${files[$i]} | cut -d‘ ‘ -f1)    fidoneecho "Lines: $lines."

引用數組中的所有元素:

    ${ARRAY_NAME[*]}

    ${ARRAY_NAME[@]}

數組元素切片: ${ARRAY_NAME[@]:offset:number}

    offset:要路過的元素個數;

    number:要取出的元素個數;省略number時,表示取位移量之後的所有元素;

向非稀疏格式數組中追加元素:

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

刪除數組中的某元素:

    unset  ARRAY[INDEX]

關聯陣列:

    declare  -A  ARRAY_NAME

    ARRAY_NAME=([index_name1]="value1"  [index_name2]="value2" ...)


本文出自 “汪立明” 部落格,請務必保留此出處http://afterdawn.blog.51cto.com/7503144/1916071

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.