在 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 中运行 find -exec 命令
发布时间:2024/03/14 浏览次数:127 分类:操作系统
-
本文将演示如何使用 find 命令的 -exec 参数来使用 find 命令定位文件中的任何文本。