經過指定元素定義linux
array[key]=valueshell
key表明索引,如array[1]=one,索引從0開始數組
echo 「${array[@]}」獲取全部數組元素的值。bash
經過declare語句定義spa
declare –a array日誌
經過元素值集合定義索引
array={ v0 v1 v2v3}element
經過鍵值定義字符串
array=([0]=value0[1]=value1)變量
按索引爲元素賦值:
array[n]=value
經過集合爲數組賦值
array=(a b c)
經過循環爲數組元素賦值
例子:
#! /bin/bash
#經過循環爲數組賦值
for i in {1..10}
do
array[$i]=$i
done
#輸出元素的值
echo"${array[@]}"
訪問第一個數組元素:
可用數組名和下標爲0的元素,如echo「${array}」
經過下標訪問數組元素:
下標從0開始,echo「${array[3]}」
計算數組的長度:
${#array[@]}
例子:
#! /bin/bash
#定義數組
array=(Mon Tue WedThu Fri Sat Sun)
#輸出數組長度
echo "thelength of the array is ${#array[@]}"
獲取某個數組元素的長度
linux[0]="Debian"
linux[1]="RedHat"
linux[2]="Ubuntu"
linux[3]="Suse"
#輸出第4個元素
echo "thefourth element is ${linux[3]}"
#輸出第4個元素的長度,4
echo "the length of the fourth element is${#linux[3]}"
#輸出第1個元素的值
echo "thefirst element is ${linux}"
#輸出第1個元素的長度
echo "the length of the first element is${#linux}"
經過循環遍歷數組元素:
#! /bin/bash
array=(Mon Tue WedThu Fri Sat Sun)
#獲取數組長度
len="${#array[@]}"
#經過循環結構遍歷數組
for((i=0;i<$len;i++))
do
echo "${array[$i]}"
done
引用全部數組元素
#! /bin/bash
array=(Mon Tue WedThu Fri Sat Sun)
#經過循環輸出全部的數組元素
for e in"${array[@]}"
do
echo "$e"
done
以切片部分獲取部分數組元素
${array[@|*]:start:length}
start表示起始元素的下標,lengh表示要截取的數組元素的個數
數組元素的替換:
並不影響原來的數組的值
${array[@|*]/pattern/replacement}
pattern表示要搜索的字符串,replacement表示用來替換的字符串
#! /bin/bash
#定義數組
a=(1 2 3 4 5)
#輸出替換結果
echo "theresult is ${a[@]/3/100}"
#輸出原始數組
echo "the oldarray is ${a[@]}"
#將替換結果賦給一個數組變量
a=(${a[@]/3/100})
#輸出新的數組變量的值
echo "the newarray is ${a[@]}"
刪除指定數組元素:
unset array[n]
刪除整個數組
unset array
複製數組:
建立一個已經存在的數組的副本
如:
newarray=(「${array[@]}」)
linux=("Debian""RedHat" "Ubuntu" "Suse" "Fedora""UTS" "CentOS")
#複製數組
linux2=("${linux[@]}")
echo"${linux2[@]}"
鏈接數組:
將兩個數組的數組元素鏈接在一塊兒,變成一個大的數組。新的數組一次包含兩個數組全部元素
(」$array1[@]」 「${array2[@]}」)
如:
#定義2個數組
linux=("Debian""RedHat" "Ubuntu" "Suse" "Fedora""UTS" "CentOS")
shell=("bash""csh" "ksh" "rsh" "sh" "rc""tcsh")
#鏈接數組
linuxshell=("${linux[@]}""${shell[@]}")
#輸出合併後的數組
echo "the newarray is ${linuxshell[@]}"
#輸出新的數組的長度,14
echo "thelength of new array is ${#linuxshell[@]}"
加載文件內容到數組
用戶能夠將普通的文本文件的內容直接加載到數組中,文件的每一行構成數組一個元素的內容。在處理日誌文件時很是有用。
如:
準備一個文本文件,demo.txt
內容爲
Ubuntu
Suse
Fedora
UTS
將demo.txt內容加載到一個數組中,而後將數組內容打印處理
#加載文件內容
content=(`cat"demo.txt"`)
#經過循環輸出數組內容
for s in"${content[@]}"
do
echo "$s"
done