shell指令碼編程數組

來源:互聯網
上載者:User

標籤:檔案的   引用   tle   value   互動式   nbsp   val   files   index   

數組:

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

數組:儲存多個元素的連續的記憶體空間,相當於多個變數的集合

數組名和索引

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

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

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

聲明數組: declare -a ARRAY_NAME:普通數組(聲明可有可無)

declare -A ARRAY_NAME: 關聯陣列(必須先聲明才可用)

注意:兩者不可相互轉換

數組賦值

單個賦值:weekdays[0]="Sunday"

多個賦值:name=("mage" "zhangsir" "wang")

特定元素賦值:title=([0]="yuan[3]")

互動式賦值:read -a 

顯示所有數組:declare -a

引用數組

引用數組元素: ${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

關聯陣列:

declare -A ARRAY_NAME ARRAY_NAME=([idx_name1]=‘val1‘ [idx_name2]=‘val2‘...)

注意:關聯陣列必須先聲明再調用

樣本

產生10個隨機數儲存於數組中,並找出其最大值和最小值

#!/bin/bash
declare -a randfor ((i=0;i<10;i++));do rand[$i]=$RANDOM if [ $i -eq 0 ];then max=${rand[$i]} min=$max else [ $max -lt ${rand[$i]} ] && { max=${rand[$i]};continue; } [ $min -gt ${rand}[$i] ] && min=${rand[$i]} fidoneecho All rand is ${rand[*]}echo Max rand is $maxecho Min rand is $min

編寫指令碼,定義一個數組,數組中的元素是/var/log目錄下所有以。log結尾的檔案,統計出其下標為偶數的檔案的行數之和。

#!/bin/bashdeclare -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.

 

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.