本文旨在复习Shell脚本编程中数组的定义和赋值、读取数组、以及获取数组的长度
知识储备
- 数组:连续的多个独立的内存空间,每个内存空间相当于一个变量
- 在逻辑上,我们看到的数组是“连续的”,但是映射到真实物理内存空间上是“杂乱的”
- bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
- 数组2元素:数组名[索引],依据索引的不同可以分为以下2种
数组定义和赋值
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) |
获取数组长度
获取数组长度分为获取数组元素个数,还可以获取指定索引元素值的长度
● 获取数组元素的个数,一般格式为:
1 2 3 |
length=${#array[@]} # 或者 length=${#array[*]} |
例1:请注意#千万不能省略,看下面这个例子
请注意:当#号省略后,就变成了将数组所有元素复制给变量length,如果要打印个数请记得#
● 获取指定索引数元素值长度,一般格式为:
1 |
length=${#array[index]} |
例2:获取上述例子中第二个元素color的长度值
时间: 2024-10-16 13:00:32