Shell脚本中的数组
了解如何在Shell脚本中使用数组将帮助您以高效的方式处理较大的数据集。
但是什么是数组,如何创建数组?找出答案吧!
什么是数组?
如果您已经对任何编程语言都有基本的了解,那么您就知道什么是数组。
但是,对于那些没有经验的人,让我们研究一下数组的基础知识,并学习如何使用它们。
变量存储单个数据元素。
另一方面,数组可以存储几乎无限数量的数据元素。
在处理大量数据时,变量可能被证明效率很低,并且动手操作数组非常有帮助。
让我们学习如何在Shell脚本中创建数组。
在Shell脚本中创建数组
在shell脚本中,可以使用两种类型的数组。
- 索引数组–存储索引从0开始的元素
- 关联数组–将元素存储在键值对中
创建的默认数组是索引数组。
如果指定索引名称,它将成为一个关联数组,并且可以使用索引名称而不是数字来访问元素。
声明数组:
root@ubuntu:~# declare -A assoc_array root@ubuntu:~# assoc_array[key]=value OR root@ubuntu:~# declare -a indexed_array root@ubuntu:~# indexed_array[0]=value </code>
请注意大小写字母a。
大写字母" A"用于声明关联数组,小写字母" a"用于声明索引数组。
declare
关键字用于显式声明数组,但是您实际上并不需要使用它们。
创建数组时,您可以简单地根据所需的数组类型来初始化值,而无需显式声明数组。
在Shell脚本中使用数组
现在,您知道如何创建数组,让我们学习如何使用数组。
由于这些是数据元素的集合,因此我们可以同时使用循环和数组来提取所需的数据点。
1.分别访问数组元素
因为我们知道每个数据点都在单独索引,所以我们可以通过指定数组索引来访问所有数组元素,如下所示:
assoc_array[element1]="Hello World" echo ${assoc_array[element1]} </code>
Shell脚本中的关联数组
同样,让我们访问一些索引数组元素。
我们可以通过用空格分隔来指定索引数组的所有元素,因为索引是为每个元素自动生成的。
index_array=(1 2 3 4 5 6) echo ${index_array[0]} </code>
Shell脚本中的索引数组
如您所见,第一个元素将根据索引0自动打印。
2.顺序读取数组元素
如果您已经知道for循环,这将是一件容易的事。
如果您不这样做,我们将在以后的教程中介绍它们。
我们将利用shell脚本中的while或者for循环遍历数组元素。
复制下面的脚本并将其另存为<filename> .sh
#!/bin/bash index_array=(1 2 3 4 5 6 7 8 9 0) for i in ${index_array[@]} do echo $i done </code>
上面的脚本将输出以下内容:
在Shell脚本中循环遍历数组
现在您可能已经注意到index_array [@]了,如果您想知道@符号是什么,我们现在将再次讨论。
Shell脚本中数组的内置操作
现在,您学习了如何分别访问元素和使用for循环,让我们学习默认情况下可用于数组的各种操作。
1.访问数组的所有元素
我们学习了如何通过提供数组的索引或者键来访问元素。
但是,如果我们要同时打印所有元素或者使用所有元素,则可以使用另一个运算符,即" [@]"符号。
正如您在上面的示例中注意到的那样,当我想使用for循环遍历所有数组元素时,使用了此符号。
echo ${assoc_array[@]} </code>
上面的代码将打印存储在assoc数组中的所有元素。
2.计算数组中的元素数
与上面的@符号类似,我们有一个#符号,可以在数组名称前加上前缀以向我们提供存储在数组中的元素的数量。
让我们看看它是如何工作的。
echo ${#index_array[@]} </code>
如果您要计算用于特定元素的字符数,我们可以简单地将@
符号替换为索引。
3.删除单个数组元素
我们知道如何添加数组元素并打印它们。
让我们学习如何删除特定元素。
为此,我们将使用关键字" unset"。
unset index_array[1] </code>
在上面的代码示例中,替换数组名称和索引ID,就删除了所需的数组元素。