数组
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
------山的那一边

浙公网安备 33010602011771号