简介
在本实验中,你将学习如何在 Shell 脚本中比较数组。数组是用于存储多个值的有用数据结构,而比较它们是编程中的常见任务。你将使用三个数组,并开发一个脚本来找出它们之间的共同元素。这个过程将帮助你理解 Shell 脚本中的数组操作、循环和条件语句。
在本实验中,你将学习如何在 Shell 脚本中比较数组。数组是用于存储多个值的有用数据结构,而比较它们是编程中的常见任务。你将使用三个数组,并开发一个脚本来找出它们之间的共同元素。这个过程将帮助你理解 Shell 脚本中的数组操作、循环和条件语句。
首先,让我们为脚本创建一个新文件。
在 WebIDE 中打开终端。你应该会看到一个以 $
符号结尾的命令提示符。
导航到项目目录:
cd ~/project
该命令将你的当前目录更改为项目文件夹。~
符号代表你的主目录,而 /project
是其中的一个子文件夹。
array-comparison.sh
的新文件:touch array-comparison.sh
touch
命令用于创建一个空文件。如果文件已经存在,它会更新文件的时间戳而不修改其内容。
现在,让我们通过添加 shebang 并初始化数组来开始编写脚本。
array-comparison.sh
中:#!/bin/bash
## Initialize the arrays
a=(3 5 8 10 6)
b=(6 5 4 12)
c=(14 7 5 7)
让我们分解一下:
#!/bin/bash
被称为 shebang。它告诉系统使用 Bash 解释器来运行此脚本。这一行对于任何 shell 脚本都至关重要。a
、b
和 c
。在 Bash 中,数组通过将元素括在圆括号 ()
中并用空格分隔来定义。让我们实现第一个比较循环,以查找数组 a
和 b
之间的共同元素。
将以下代码添加到你的脚本中:
## Initialize an array to store common elements between a and b
z=()
## Compare arrays a and b
for x in "${a[@]}"; do
for y in "${b[@]}"; do
if [ $x = $y ]; then
z+=($x)
fi
done
done
echo "Common elements between a and b: ${z[@]}"
让我们详细解释这段代码:
z=()
初始化一个空数组 z
,用于存储共同元素。for x in "${a[@]}"
是一个循环,用于遍历数组 a
中的每个元素。"${a[@]}"
语法会展开为数组的所有元素。for y in "${b[@]}"
,用于遍历数组 b
中的每个元素。if [ $x = $y ]
检查来自 a
的当前元素是否与来自 b
的当前元素相等。z+=($x)
将此元素添加到数组 z
中。echo "Common elements between a and b: ${z[@]}"
打印共同元素。${z[@]}
语法会展开为数组 z
的所有元素。现在,让我们实现第二个比较循环,以查找数组 c
与之前找到的数组 z
中的共同元素之间的共同元素。
将以下代码添加到你的脚本中:
## Initialize an array to store common elements among a, b, and c
j=()
## Compare array c with the common elements found in z
for i in "${c[@]}"; do
for k in "${z[@]}"; do
if [ $i = $k ]; then
j+=($i)
fi
done
done
echo "Common elements among a, b, and c: ${j[@]}"
这段代码与之前的循环类似,但有一些关键区别:
j
,用于存储最终的共同元素。for i in "${c[@]}"
遍历数组 c
中的元素。for k in "${z[@]}"
遍历我们在 a
和 b
之间找到的共同元素,这些元素存储在数组 z
中。c
中的元素与 z
中的元素进行比较,如果匹配,则将其添加到数组 j
中。现在我们已经完成了脚本的编写,接下来让我们使其可执行并运行它。
chmod +x ~/project/array-comparison.sh
chmod
命令用于更改文件的权限。+x
选项添加可执行权限,允许你运行脚本。
~/project/array-comparison.sh
该命令执行你的脚本。~/project/
部分指定了脚本的路径。
你应该会看到类似以下的输出:
Common elements between a and b: 5 6
Common elements among a, b, and c: 5
此输出表明:
a
和 b
之间的共同元素是 5 和 6。a
、b
和 c
)之间的共同元素是 5。如果你没有看到此输出或遇到错误,请仔细检查脚本中是否有拼写错误或遗漏的部分。
在本实验中,你学习了如何在 Shell 脚本中比较数组。你创建了一个脚本,使用嵌套循环和条件语句来查找三个数组之间的共同元素。这个练习展示了 Shell 脚本中的关键概念,包括:
这些技能是 Shell 脚本的基础,可以应用于未来更复杂的数据处理任务。随着你继续使用 Shell 脚本,你会发现数组操作是高效处理数据集的强大工具。
记住,练习是掌握这些概念的关键。尝试修改脚本以处理不同的数组,或查找唯一元素而不是共同元素。祝你编写脚本愉快!