Shell 数组

ShellShellBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

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

创建一个新的 shell 脚本文件

让我们从创建一个新的 shell 脚本文件开始,我们将在其中编写数组操作。

  1. 在 WebIDE 中打开你的终端。

  2. 导航到项目目录:

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

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

初始化空数组

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

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

#!/bin/bash

## Initialize empty arrays
NUMBERS=()
STRINGS=()
NAMES=()

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

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

向数组中添加元素

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

将以下代码添加到你的 arrays.sh 文件中,放在数组初始化的下方:

## Add elements to NUMBERS array
NUMBERS+=(1)
NUMBERS+=(2)
NUMBERS+=(3)

## Add elements to STRINGS array
STRINGS+=("hello")
STRINGS+=("world")

## Add elements to NAMES array
NAMES+=("John")
NAMES+=("Eric")
NAMES+=("Jessica")

这段代码的作用如下:

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

确定数组中元素的数量

数组的一个常见操作是找出它们包含多少个元素。让我们为 NAMES 数组实现这一操作。

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

## Get the number of elements in the NAMES array
NumberOfNames=${#NAMES[@]}

这行代码的作用如下:

  • ${#NAMES[@]} 用于获取 NAMES 数组中元素的数量。
  • 我们将这个值存储在一个名为 NumberOfNames 的变量中。
  • 方括号内的 @ 符号表示数组的所有元素。
  • NAMES 前面的 # 符号告诉 shell 计算元素的数量。

访问数组中的特定元素

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

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

## Access the second name in the NAMES array
second_name=${NAMES[1]}

这段代码的作用如下:

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

打印数组和变量

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

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

## Print the arrays and variables
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 脚本中的数据提供了一种强大的方式,使你的代码更高效且更易于管理。