shell数组

发布时间 2023-09-21 16:12:29作者: 村尚chun叔

shell数组

普通数组:只能使用整数作为数组索引(元素的下标)
关联数组:可以使用字符串作为数组索引(元素的下标)
普通数组定义:用括号来表示数组,数组元素(变量)用“空格”符号分割开。定义数组的一般形式为:
一次赋一个值:
变量名=变量值

array[0]=v1
array[1]=v2
array[3]=v3

一次赋多个值:

array=(var1 var2 var3 var4)
array1=(`cat /etc/passwd`)			//将文件中每一行赋值给array1数组
array2=(`ls /root`)
array3=(harry amy jack "Miss Hou")
array4=(1 2 3 4 "hello world" [10]=linux)

读取数组:
${array[i]} i表示元素的下标

echo ${array[0]}	获取第一个元素
echo ${array[*]}	获取数组里的所有元素
echo ${#array[*]}	获取数组里所有元素个数
echo ${!array[@]}	获取数组元素的索引下标
echo ${array[@]:1:2}	访问指定的元素;1代表从下标为1的元素开始获取;2代表获取后面几个元素

查看普通数组信息:

declare -a
declare -a array='([0]="var1" [1]="var2" [2]="var3")'
declare -a array1='([0]="uu1" [1]="uu2" [2]="uu3" [3]="uu4")'
declare -a array2='([0]="1.sh" [1]="2.sh" [2]="3.sh" [3]="4.sh" [4]="passwd")'
declare -a array3='([0]="jack" [1]="harry" [2]="Miss Hou" [5]="tom")'

关联数组定义:
首先声明关联数组

declare -A asso_array1
declare -A asso_array2
declare -A asso_array3

数组赋值:
一次赋一个值:
数组名[索引|下标]=变量值

asso_array1[linux]=one
asso_array1[java]=two
asso_array1[php]=three

一次赋多个值:

asso_array2=([name1]=harry [name2]=jack [name3]=amy [name4]="Miss Hou")

查看关联数组:

declare -A
declare -A asso_array1='([php]="three" [java]="two" [linux]="one" )'
declare -A asso_array2='([name3]="amy" [name2]="jack" [name1]="harry" [name4]="Miss Hou" )'