介绍
了解如何在 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注意大写字母 A 和小写字母 a。大写字母 A 用于声明关联数组,而小写字母 a 用于声明索引数组。.
`declare` 关键字用于显式声明数组,但实际上并非必须使用。创建数组时,只需根据所需的数组类型初始化值即可,无需显式声明数组。.
在 shell 脚本中使用数组
既然你已经知道如何创建数组,接下来我们来学习如何使用数组。由于数组是数据元素的集合,我们可以同时使用循环和数组来提取所需的数据点。.
1. 单独访问数组元素
由于我们知道每个数据点都有单独的索引,因此我们可以通过指定数组索引来访问数组中的所有元素,如下所示:
assoc_array[element1]="Hello World"
echo ${assoc_array[element1]}类似地,我们来访问索引数组中的一些元素。我们可以用空格分隔索引数组中的所有元素,因为每个元素的索引都是自动生成的。.
index_array=(1 2 3 4 5 6)
echo ${index_array[0]}如您所见,第一个元素会自动打印在索引 0 处。.
2. 顺序读取数组元素
如果您已经了解循环,这将很容易。如果您不了解,我们将在以后的教程中讲解。我们将使用 shell 脚本中的 while 或 for 循环来操作数组元素。复制以下脚本并将其保存为保存 .sh
#!/bin/bash
index_array=(1 2 3 4 5 6 7 8 9 0)
for i in ${index_array[@]}
do
echo $i
done上述脚本将输出以下结果:
现在你可能已经注意到 index_array[@],如果你想知道 @ 符号是做什么用的,我们现在就来解释一下。.
shell脚本中数组的内置操作
既然你已经学会了如何单独访问元素和使用 for 循环,那么让我们来学习数组默认可用的各种操作。.
1. 访问数组的所有元素
我们学习了如何通过提供索引或数组键来访问元素。但如果我们想一次性打印所有元素或对所有元素进行操作,我们可以使用另一个运算符,即 [@] 符号。.
正如你在上面的例子中看到的,当我想用 for 循环遍历数组的所有元素时,我使用了这个符号。.
echo ${assoc_array[@]}以上代码会打印出 assoc 数组中存储的所有元素。.
2. 计算数组中元素的个数
与上面的 @ 符号类似,我们还有符号 #,它可以作为数组名称的前缀,表示数组中存储的元素数量。让我们看看它是如何工作的。.
echo ${#index_array[@]}如果要统计某个元素使用的字符数,只需将 @ 符号替换为索引即可。.
3. 删除单个数组元素
我们知道如何向数组中添加元素并打印它们。接下来,我们来学习如何删除指定的元素。为此,我们使用 unset 关键字。.
unset index_array[1]替换上面代码示例中的数组名称和索引 ID,即可删除所需的数组元素。很简单,对吧?
结果
Shell 脚本功能非常强大,只要编写得当,几乎可以替代你在终端中执行的任何操作。Shell 脚本中数组的一些额外功能还包括使用正则表达式。我们可以使用各种正则表达式来操作 Shell 脚本中的数组元素。.
现在,我们希望您已经对创建和使用数组有了充分的了解,并且能够在脚本中使用数组。请在下方留言分享您的想法,如果您对此主题有任何疑问,也请告诉我们。.












