shell编程-数组


数组

数组是一种特殊的数据结构,其中的每一项被称为一个元素,对于每个元素,都可以用索引方式取出元素的值。使用数组的典型场景是一次性要记录很多类型相同的数据时(但不是说一定要相同,因为Shell变量是弱类型性的,并不要求数组的每个元素都是相同类型)。

  1. 创建数组

    • 直接创建数组

      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$ 
  2. 读取数组元素值:

    • ${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$ 
      
  3. 关联数组:

    • 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$ 
      
  4. 获取数组的长度#

    ronie@ronie-virtual-machine:~/Desktop$ echo ${#arr[@]}
    2
    ronie@ronie-virtual-machine:~/Desktop$ echo ${#arr[*]}
    2
    ronie@ronie-virtual-machine:~/Desktop$ 
    

声明:Hello World|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - shell编程-数组


我的朋友,理论是灰色的,而生活之树是常青的!