数组
数组是一种特殊的数据结构,其中的每一项被称为一个元素,对于每个元素,都可以用索引方式取出元素的值。使用数组的典型场景是一次性要记录很多类型相同的数据时(但不是说一定要相同,因为Shell变量是弱类型性的,并不要求数组的每个元素都是相同类型)。
创建数组
直接创建数组
ronie@ronie-virtual-machine:~/Desktop$ arr=(1 2 3 4 5) ronie@ronie-virtual-machine:~/Desktop$ echo ${arr[0]} 1 ronie@ronie-virtual-machine:~/Desktop$ echo ${arr} 1 ronie@ronie-virtual-machine:~/Desktop$ echo ${arr[2]} 3 ronie@ronie-virtual-machine:~/Desktop$
使用数字下标来定义数组
ronie@ronie-virtual-machine:~/Desktop$ arr[0]=0 ronie@ronie-virtual-machine:~/Desktop$ arr[1]=2 ronie@ronie-virtual-machine:~/Desktop$ arr[2]=1 ronie@ronie-virtual-machine:~/Desktop$ arr[3]=4 ronie@ronie-virtual-machine:~/Desktop$ arr[4]=6 ronie@ronie-virtual-machine:~/Desktop$ echo ${arr[2]} 1 ronie@ronie-virtual-machine:~/Desktop$ echo ${arr[1]} 2 ronie@ronie-virtual-machine:~/Desktop$
读取数组元素值:
${array_name[index]}
ronie@ronie-virtual-machine:~/Desktop$ arr[0]=0 ronie@ronie-virtual-machine:~/Desktop$ arr[1]=2 ronie@ronie-virtual-machine:~/Desktop$ arr[2]=1 ronie@ronie-virtual-machine:~/Desktop$ arr[3]=4 ronie@ronie-virtual-machine:~/Desktop$ arr[4]=6 ronie@ronie-virtual-machine:~/Desktop$ echo ${arr[2]} 1 ronie@ronie-virtual-machine:~/Desktop$ echo ${arr[1]} 2 ronie@ronie-virtual-machine:~/Desktop$
获取数组中的所有元素:使用@或*
ronie@ronie-virtual-machine:~/Desktop$ arr=(1 2 3 4 5 6) ronie@ronie-virtual-machine:~/Desktop$ echo ${arr[@]} 1 2 3 4 5 6 ronie@ronie-virtual-machine:~/Desktop$ echo ${arr[*]} 1 2 3 4 5 6 ronie@ronie-virtual-machine:~/Desktop$
关联数组:
declare -A array_name
ronie@ronie-virtual-machine:~/Desktop$ declare -A arr=(["ronie"]="male" ["kelly"]="female") ronie@ronie-virtual-machine:~/Desktop$ echo ${arr[ronie]} male ronie@ronie-virtual-machine:~/Desktop$
先声明一个关联数组,然后再设置键和值
ronie@ronie-virtual-machine:~/Desktop$ declare -A arr ronie@ronie-virtual-machine:~/Desktop$ arr['ronie']='18' ronie@ronie-virtual-machine:~/Desktop$ arr['mike']='32' ronie@ronie-virtual-machine:~/Desktop$ echo ${arr['ronie']} 18 ronie@ronie-virtual-machine:~/Desktop$
使用感叹号!获取数组的所有键
ronie@ronie-virtual-machine:~/Desktop$ declare -A arr ronie@ronie-virtual-machine:~/Desktop$ arr['mike']='32' ronie@ronie-virtual-machine:~/Desktop$ arr['ronie']='18' ronie@ronie-virtual-machine:~/Desktop$ echo ${!arr[*]} ronie mike ronie@ronie-virtual-machine:~/Desktop$
使用@或*获取数组中的所有元素
ronie@ronie-virtual-machine:~/Desktop$ declare -A arr ronie@ronie-virtual-machine:~/Desktop$ arr['mike']='32' ronie@ronie-virtual-machine:~/Desktop$ arr['ronie']='18' ronie@ronie-virtual-machine:~/Desktop$ echo ${arr[@]} 18 32 ronie@ronie-virtual-machine:~/Desktop$
获取数组的长度#
ronie@ronie-virtual-machine:~/Desktop$ echo ${#arr[@]} 2 ronie@ronie-virtual-machine:~/Desktop$ echo ${#arr[*]} 2 ronie@ronie-virtual-machine:~/Desktop$
Comments | NOTHING