数组

Shell中提供了创建一维数组的能力,你可以把一串数字、名字或者文件放在一个变量中。
Shell中的数组也是0开始的,获取数组中某个元素的语法格式为:${arrayname[index]}。

▪bash仅支持一维数组,
▪下标可以是整数或算术表达式
▪下标可以不连续
▪不需要定义数组大小

(1)定义数组
括号来表示数组,元素用"空格"分割。
1,array_name=(value0 value1 value2 value3)
2,array_name=(
value0
value1
value2
value3
)

(2)使用declare的-a选项定义数组
/> declare -a friends #声明一个数组变量
/> friends=(sheryl peter louise) #给数组变量赋值
/> echo ${friends[0]} #通过数组下标的方式访问数组的元素
sheryl
/> echo ${friends[1]}
peter
/> echo ${friends[2]}
louise
/> echo ${friends[*]} #下标中星号表示所有元素。
shery1 peter louise

(3)变量后面增加下标操作符直接创建数组。
1,array_name[0]=value0
array_name[1]=value1

 

●读取数组
${数组名[下标]}
valuen=${array_name[n]}
${array_name[@]} #数组中的所有元素

●获取数组中的所有元素
${my_array[*]}
${my_array[@]}

●获取数组的长度
length=${#array_name[@]}
length=${#array_name[*]}

●取得数组单个元素的长度
lengthn=${#array_name[n]}

●清空数组
unset my_array

●数组不连续赋值。
my_array=(aa [3]=bb [2]=cc)

例:
/> echo ${#friends[*]} 
3
/> unset friends #unset array清空整个数组,unset array[index]仅清空指定下标的元素。

/> x[3]=100
/> echo ${x[*]}
100
/> echo ${x[0]} #0下标的元素并没有被赋值过,因为输出为空。

/> echo ${x[3]}
100
/> states=(ME [3]=CA [2]=CT) #ME的下标为0。
/> echo ${states[0]}
ME
/> echo ${states[1]} #数组下标为1的位置没有被赋值过,因此没有输出。

/> echo ${states[2]}
CT
/> echo ${states[3]}
CA

  

posted @ 2019-03-18 10:52  山的那一边  阅读(120)  评论(0)    收藏  举报