欲忘树 发表于 2018-8-21 13:34:23

[9-13]Shell系列8——数组

  本文旨在复习Shell脚本编程中数组的定义和赋值、读取数组、以及获取数组的长度
  知识储备

[*]  数组:连续的多个独立的内存空间,每个内存空间相当于一个变量
[*]  在逻辑上,我们看到的数组是“连续的”,但是映射到真实物理内存空间上是“杂乱的”
[*]  bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
[*]  数组2元素:数组名[索引],依据索引的不同可以分为以下2种
http://s3.51cto.com/wyfs02/M00/73/95/wKiom1YBVVah4QUcAAZPQEXvGiY088.bmp
  数组定义和赋值
  Shell中,用括号来表示数组,数组元素用“空格”符号分割开。
  ● 定义数组的一般形式为:
  1
  array_name=(value1 value2 ... valueN)
  ● 赋值方式
  (1)一次赋值一个元素
  1
  array=value
  (2)一次复制全部元素
  1
  array=("val1" "val2" ...)
  (3)指定索引进行赋值
  1
  array=(="val1" ="val2")
  (4)从用户交互式输入赋值
  1
  read -a array
  读取数组[引用数组]
  ● 读取数组指定索引的元素值的一般格式是:
  1
  ${array}
  ● 还可以一次读取所有数组中元素
  1
  2
  ${array
[*]}
  ${array[@]}
  例1:输入5个数字,存入数组,引用该数组倒序输出这5个数字
  代码实现
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10
  11
  #!/bin/bash
  for i in $(seq 0 4)
  do
  read -p "Enter the 5 nums: " num
  Numarray[$i]=$num
  done
  for q in $(seq 4 -1 0)
  do
  echo ${Numarray[$q]}
  done
http://s3.51cto.com/wyfs02/M01/73/95/wKiom1YBXBHSevIZAAkYIF5yCS8247.bmp
  获取数组长度
  获取数组长度分为获取数组元素个数,还可以获取指定索引元素值的长度
  ● 获取数组元素的个数,一般格式为:
  1
  2
  3
  length=${#array[@]}
  # 或者
  length=${#array
[*]}
  例1:请注意#千万不能省略,看下面这个例子
http://s3.51cto.com/wyfs02/M01/73/96/wKiom1YBXrKT_d-JAASIAAGHOA0752.bmp
  请注意:当#号省略后,就变成了将数组所有元素复制给变量length,如果要打印个数请记得#
  ● 获取指定索引数元素值长度,一般格式为:
  1
  length=${#array}
  例2:获取上述例子中第二个元素color的长度值
http://s3.51cto.com/wyfs02/M00/73/96/wKiom1YBX9yTu6v4AAKTYL4vs6A888.bmp

页: [1]
查看完整版本: [9-13]Shell系列8——数组