在 Bash 中排序数组
对数组进行排序对于任何编程语言来说都是一项非常常见的任务。 在 Bash 脚本中,我们还可以通过两种不同的方式完成此任务。
第一个使用任何排序算法,第二个使用 Bash 脚本中名为 readarray 的内置关键字。 本文将展示我们如何在 Bash 脚本中对数组进行排序。
此外,我们将看到一些带有解释的示例,以使主题更容易理解。
在 Bash 中使用冒泡排序对数组进行排序
在 Bash 脚本中,您可以使用任何排序算法(如冒泡排序、合并排序等)对数组进行排序。在我们下面的示例中,我们实现了冒泡排序来对数组进行排序。
我们示例的代码如下所示。
MyArray=(9 8 20 10 15)
echo "The original array is:"
echo ${MyArray[*]}
# We implemented the bubble sort here.
for ((i = 0; i<5; i++))
do
for((j = 0; j<5-i-1; j++))
do
if [ ${MyArray[j]} -gt ${MyArray[$((j+1))]} ]
then
# swap
temp=${MyArray[j]}
MyArray[$j]=${MyArray[$((j+1))]}
MyArray[$((j+1))]=$temp
fi
done
done
echo "The sorted array is:"
echo ${MyArray[*]}
让我们逐行解释上面的例子。
- 首先,我们声明了一个名为 MyArray 的数组。
-
之后,我们通过
echo ${MyArray[*]}
行显示数组。 - 之后,我们创建了两个循环并实现了冒泡排序。 在这些循环中,我们创建了一个条件来判断当前元素是否大于下一个元素。
- 如果条件成立,那么我们在数组的这两个元素之间执行交换操作。
- 最后,我们只是在排序完成后显示数组。 当您运行上面的程序时,您将得到如下所示的输出。
The original array is:
9 8 20 10 15
The sorted array is:
8 9 10 15 20
在 Bash 中使用 readarray 关键字对数组进行排序
假设您有一个包含字母和数字字符混合的数组。 要对这个数组进行排序,您需要找到不同的方法。
要对该数组进行排序,需要比较字符的 ASCII 值。
Bash 脚本中的内置关键字使您只需一行代码即可完成此操作。 关键字是readarray。
在下面的示例中,我们创建了一个组合字母和数字字符的数组。 在我们使用 readarray 关键字对数组进行排序后,我们显示排序后的数组。
我们示例的代码如下所示。
MyArray=(n a c b 6 7 5)
readarray -t MyArray < <(printf '%s\n' "${MyArray[@]}" | sort)
echo "The sorted list is: ${MyArray[*]}"
执行脚本后,您将获得如下所示的输出。
The sorted list is: 5 6 7 a b c n
请注意
,本文中使用的所有代码都是用 Bash 编写的。 它只会在 Linux Shell 环境中工作。
相关文章
在 Bash 脚本中执行变量中的命令
发布时间:2023/05/18 浏览次数:106 分类:操作系统
-
本篇文章是关于将 Bash 命令存储在一个变量中,然后直接从这个变量中执行它。 首先,我们将讨论执行变量中包含的命令的多种方法,然后是几个脚本示例。
Bash md5sum 命令
发布时间:2023/05/18 浏览次数:197 分类:操作系统
-
本篇文章介绍如何在 Bash 中使用 md5sum 命令。Bash md5sum 命令。md5sum 命令打印给定文件的 32 字符和 128 位校验和。
如何在 CentOS 中获取 IP 地址
发布时间:2023/05/04 浏览次数:109 分类:操作系统
-
这篇简短的文章是对 CentOS 的一个简短介绍,然后简要讨论了我们如何使用命令行界面 (CLI) 在 CentOS 中获取服务器 IP 地址。
在 Linux 中更新 YUM
发布时间:2023/05/04 浏览次数:86 分类:操作系统
-
本文介绍了 Linux 中的 yum update 命令。本文将教我们如何在 Linux 中更新 YUM,以及如何在 Linux 系统上安装、更新、删除、查找和管理包。
在 Linux 中安装 Deb 文件
发布时间:2023/05/04 浏览次数:133 分类:操作系统
-
本文介绍如何在 Linux 中安装 deb 文件。在这篇 Linux 文章中,我们将学习如何在 Linux 系统上安装 .deb(Debian 软件包)文件。 我们还将看到如何在安装后删除 .deb 文件。
Linux 中的 lsof 命令
发布时间:2023/05/04 浏览次数:84 分类:操作系统
-
在这篇 Linux 文章中,我们将了解 Linux 操作系统中的 lsof 命令。 我们将看到如何在 Linux 中将此命令用于不同目的。
Linux 解决不能执行二进制文件问题
发布时间:2023/05/04 浏览次数:350 分类:操作系统
-
在本文中,我们将学习如何在 Linux 中执行二进制文件。 如果 Linux 无法执行二进制文件,我们还将学习如何解决错误。