Shell 数组

ShellBeginner
立即练习

介绍

在本实验中,你将学习如何在 Shell 编程中使用数组。数组是一种允许你在单个名称下存储多个值的数据结构,这使得组织和处理数据变得更加容易。你将学习如何初始化数组、向数组添加元素、通过索引访问元素以及确定数组中元素的数量。这些知识是进行更高级的 Shell 脚本编写和数据处理任务的基础。

这是一个引导实验,提供逐步指导以帮助你学习和练习。请仔细遵循指令完成每个步骤并获得实践经验。历史数据表明,这是一个初学者级别的实验,完成率为 97%。它在学习者中获得了 100% 的好评率。

创建新的 Shell 脚本文件

首先,我们创建一个新的 Shell 脚本文件,用于编写数组操作代码。

  1. 在 WebIDE 中打开终端。

  2. 切换到项目目录:

    cd ~/project
  3. 使用 touch 命令创建一个名为 arrays.sh 的新文件:

    touch arrays.sh
  4. 在 WebIDE 中打开 arrays.sh 文件。

初始化空数组

现在我们有了脚本文件,让我们从初始化三个空数组开始。

将以下代码添加到你的 arrays.sh 文件中:

#!/bin/bash

## 初始化空数组
NUMBERS=()
STRINGS=()
NAMES=()

让我们分析一下这段代码的作用:

  • 第一行 #!/bin/bash 被称为 Shebang。它告诉系统该脚本应由 Bash Shell 执行。
  • 我们创建了三个空数组:NUMBERSSTRINGSNAMES
  • () 语法用于初始化一个空数组。

向数组添加元素

现在我们有了空数组,让我们向其中添加一些元素。

arrays.sh 文件中数组初始化的下方添加以下代码:

## 向 NUMBERS 数组添加元素
NUMBERS+=(1)
NUMBERS+=(2)
NUMBERS+=(3)

## 向 STRINGS 数组添加元素
STRINGS+=("hello")
STRINGS+=("world")

## 向 NAMES 数组添加元素
NAMES+=("John")
NAMES+=("Eric")
NAMES+=("Jessica")

这段代码的作用如下:

  • 我们使用 += 运算符向数组追加元素。
  • 对于 NUMBERS,我们添加了整数 1、2 和 3。
  • 对于 STRINGS,我们添加了单词「hello」和「world」。
  • 对于 NAMES,我们添加了三个名字:「John」、「Eric」和「Jessica」。
  • 请注意,我们将字符串元素括在引号中,但数字不需要引号。

确定数组中的元素数量

数组的一种常见操作是获取它包含多少个元素。让我们对 NAMES 数组执行此操作。

将以下代码添加到你的 arrays.sh 文件中:

## 获取 NAMES 数组中的元素数量
NumberOfNames=${#NAMES[@]}

这一行执行了以下操作:

  • ${#NAMES[@]} 返回 NAMES 数组中的元素个数。
  • 我们将这个值存储在名为 NumberOfNames 的变量中。
  • 括号内的 @ 符号代表数组中的所有元素。
  • NAMES 前面的 # 符号告诉 Shell 计算元素的数量。

访问数组中的特定元素

现在,让我们访问 NAMES 数组中的一个特定元素。我们将获取第二个名字。

将此代码添加到你的 arrays.sh 文件中:

## 访问 NAMES 数组中的第二个名字
second_name=${NAMES[1]}

这段代码的作用如下:

  • 我们通过 ${NAMES[1]} 访问 NAMES 数组的第二个元素。
  • 请记住,Bash 中的数组索引从 0 开始,因此 [1] 代表第二个元素。
  • 我们将这个值存储在名为 second_name 的变量中。

打印数组和变量

最后,让我们添加一些代码来打印出我们的数组和变量,以查看操作结果。

将以下代码添加到 arrays.sh 文件的末尾:

## 打印数组和变量
echo "NUMBERS array: ${NUMBERS[@]}"
echo "STRINGS array: ${STRINGS[@]}"
echo "The number of names listed in the NAMES array: $NumberOfNames"
echo "The second name on the NAMES list is: $second_name"

这段代码的作用如下:

  • 我们使用 echo 将字符串打印到控制台。
  • ${NUMBERS[@]}${STRINGS[@]} 会打印这些数组的所有元素。
  • 我们打印了之前创建的 NumberOfNamessecond_name 变量。

运行脚本

现在我们已经写好了脚本,是时候运行它并查看结果了。

  1. 在终端中,确保你处于正确的目录:

    cd ~/project
  2. 为脚本添加执行权限:

    chmod +x arrays.sh
  3. 运行脚本:

    ./arrays.sh

你应该会看到类似以下的输出:

NUMBERS array: 1 2 3
STRINGS array: hello world
The number of names listed in the NAMES array: 3
The second name on the NAMES list is: Eric

此输出表明我们的数组操作成功了:

  • NUMBERS 数组包含 1、2 和 3。
  • STRINGS 数组包含「hello」和「world」。
  • 我们正确计算出 NAMES 数组中有 3 个名字。
  • 我们成功获取了「Eric」作为第二个名字。

总结

在本实验中,你学习了在 Shell 脚本中使用数组的基础知识。你练习了初始化数组、向数组添加元素、访问特定元素以及确定数组中的元素数量。这些技能对于更高级的 Shell 脚本任务至关重要,尤其是在处理数据列表或需要对多个项目执行操作时。数组提供了一种强大的方式来组织和处理 Shell 脚本中的数据,使你的代码更高效且更易于管理。