515439429 发表于 2018-8-24 08:23:40

Shell脚本编程——数组(array)

  数组与变量的区别
  变量:存储单个元素的内存空间
  数组:存储多个元素的连续的内存空间,相当于多个变量的集合
  数组=数组名+索引
  索引:编号从0开始,属于数值索引
  注意:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0版本之后开始支持
  bash的数组支持稀疏格式(索引不连续)
  定义数组
  declare -a ARRAY_NAME:普通数组
  declare -A ARRAY_NAME: 关联数组
  数组元素的赋值:
  (1) 一次只赋值一个元素;
  ARRAY_NAME=VALUE
  weekdays="Sunday"
  weekdays="Thursday"
  (2) 一次赋值全部元素:
  ARRAY_NAME=("VAL1" "VAL2" "VAL3" ...)
  (3) 只赋值特定元素:
  ARRAY_NAME=(="VAL1" ="VAL2" ...)
  (4) 交互式数组赋值(只能用于普通数组)
  read -a ARRAY
  引用数组
  引用数组元素:${ARRAY_NAME}
  注意:省略表示引用下标为0的元素
  数组的长度(数组中元素的个数):
  ${#ARRAY_NAME
[*]}
  ${#ARRAY_NAME[@]}
  数组数据处理
  引用数组中的元素:
  所有元素:${ARRAY
[*]},${ARRAY[@]}
  数组切片:${ARRAY[@]:offset:number}
  offset: 要跳过的元素个数
  number: 要取出的元素个数
  取偏移量之后的所有元素:${ARRAY[@]:offset}
  向数组中追加元素:ARRAY[${#ARRAY
[*]}]
  删除数组中的某元素,将会形成稀疏格式:unset ARRAY
  关联数组:declare -A ARRAY_NAME
  ARRAY_NAME=(='val1' ='val2‘...)
  应用实例
  1,使用数组保存10个随机数,并找出最大什与最小值
  示例代码:
  # cat arrayrandom.sh
  #!/bin/bash
  #Author:wangjun
  #Contact QQ:183530300
  #Version:2.0
  #Create time:2016-08-23 10:33:38

  #Description:Compares the>  declare -a array_random
  declare -i maxrandom=0
  declare -i minrandom=32767
  for I in {0..9};do
  array_random[$I]=$
  echo ${array_random[$I]}
  if [[ ${array_random[$I]} -gt $maxrandom ]];then
  maxrandom=${array_random[$I]}
  elif [[ ${array_random[$I]} -lt $minrandom ]];then
  minrandom=${array_random[$I]}
  fi
  done
  echo Maxrandom is : $maxrandom
  echo Minrandom is : $minrandom
  # arrayrandom.sh
  31892
  30901
  16560
  226
  7987
  2082
  5756
  23992
  28530
  21832
  Maxrandom is : 31892
  Minrandom is : 226

页: [1]
查看完整版本: Shell脚本编程——数组(array)