什麼是陣列? 陣列也是一種變數,常規變數只能儲存一個值,陣列可以儲存多個值 #普通陣列:只能用整數作為陣列的索引--預設值從0開始 下標 #關聯陣列:可以使用字串作為陣列的索引
陣列定義
普通陣列定義: [root@linux-server script]# books=( linux shell awk sed ) ---在python中叫列表 引用:${array_name[index]} #引用 [root@linux-server script]# echo ${books[0]} linux [root@linux-server script]# echo ${books[1]} shell [root@linux-server script]# echo ${books[2]} awk #關聯陣列需要提前宣告 Declare命令: [test @test test]# declare [-選項] 引數說明: -a :#定義為陣列--array -A : #定義關聯陣列 例1 declare -A myarry1 [root@linux-server script]# declare -A myarry1 [root@linux-server script]# myarry1=([name]=soso666 [sex]=man [age]=18) [root@linux-server script]# echo ${myarry1[name]} soso666 [root@linux-server script]# echo ${myarry1[age]} 18 定義方法1: [root@linux-server script]# declare -a myarry=(5 6 7 8) [root@linux-server script]# echo ${myarry[2]} 顯示結果為 7 定義方法3: #語法:陣列名[index]=變數值 #!/bin/bash area[11]=23 area[13]=37 area[51]="UFO" 示例 [root@linux-server script]# vim shuzu.sh #!/bin/bash NAME[0]="BJ" NAME[1]="SH" NAME[2]="SZ" NAME[3]="GZ" NAME[4]="HZ" NAME[5]="ZZ" echo "First Index: ${NAME[0]}" echo "Second Index: ${NAME[1]}" echo "sixth Index: ${NAME[5]}" 輸出結果 [root@linux-server script]# bash shuzu.sh First Index: BJ Second Index: SH sixth Index: ZZ
訪問陣列當設定任何陣列變數時,可以訪問它
[root@linux-server script]# aa=(haha heihei baibai) [root@linux-server script]# echo ${aa[0]} #訪問陣列中的第一個元素 [root@linux-server script]# echo ${aa[@]} #訪問陣列中所有的元素 等同與echo ${aa[*]} [root@linux-server script]# echo ${#aa[@]} #統計元素的個數 [root@linux-server script]# echo ${!aa[@]} #列印索引
您可以訪問陣列中的所有專案透過以下方式之一:
${array_name[*]} ${array_name[@]}
陣列遍歷案例
[root@newrain array]# cat array01.sh #!/bin/bash while read line do host[i++]=$line done </etc/hosts echo for i in ${!host[@]} do echo "$i:${host[$i]}" done 遍歷陣列for [root@newrain array]# cat array02.sh #!/bin/bash #IFS=$'\n' for line in `cat /etc/hosts` do host[j++]=$line done for i in ${!host[@]} do echo ${host[$i]} done #注意:for迴圈中會將tab\空格\回車作為分隔符預設為空格. [root@localhost ~]# vim count_shells.sh #!/usr/bin/bash declare -A shells while read line do type=`echo $line | awk -F":" '{print $NF}'` let shells[$type]++ done < /etc/passwd for i in ${!shells[@]} do echo "$i: ${shells[$i]}" done
最新評論