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

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

知识储备

  • 数组:连续的多个独立的内存空间,每个内存空间相当于一个变量

  • 在逻辑上,我们看到的数组是“连续的”,但是映射到真实物理内存空间上是“杂乱的

  • bash支持一维数组(不支持多维数组),并且没有限定数组的大小。

  • 数组2元素:数组名[索引],依据索引的不同可以分为以下2种

wKiom1YBVVah4QUcAAZPQEXvGiY088.bmp

数组定义和赋值

Shell中,用括号来表示数组,数组元素用“空格”符号分割开。

定义数组的一般形式为:

1


array_name=(value1 value2 ... valueN)

赋值方式

(1)一次赋值一个元素

1


array[index]=value

(2)一次复制全部元素

1


array=("val1" "val2" ...)

(3)指定索引进行赋值

1


array=([0]="val1" [3]="val2")

(4)从用户交互式输入赋值

1


read -a array


读取数组[引用数组]

读取数组指定索引的元素值的一般格式是:

1


${array[index]}

还可以一次读取所有数组中元素

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

wKiom1YBXBHSevIZAAkYIF5yCS8247.bmp


获取数组长度

获取数组长度分为获取数组元素个数,还可以获取指定索引元素值的长度

获取数组元素的个数,一般格式为:

1
2
3


length=${#array[@]}
# 或者
length=${#array[*]}

例1:请注意#千万不能省略,看下面这个例子

wKiom1YBXrKT_d-JAASIAAGHOA0752.bmp

请注意:当#号省略后,就变成了将数组所有元素复制给变量length,如果要打印个数请记得#


获取指定索引数元素值长度,一般格式为:   

1


length=${#array[index]}


例2:获取上述例子中第二个元素color的长度值

wKiom1YBX9yTu6v4AAKTYL4vs6A888.bmp


你可能感兴趣的:(数组)