Linux 中的 Bash 数组简介


介绍

Bash 是一种流行的命令行 Shell,用于 Linux 和其他基于 Unix 的操作系统。Bash 的强大功能之一是它对数组的支持。数组是值的集合,可以使用索引访问。在本文中,我们将讨论 Bash 数组的基础知识以及如何在 Linux 中使用它们。

什么是 Bash 数组?

Bash 数组是一个可以保存多个值的变量。这些值存储在连续的内存位置,并且可以使用索引访问。数组中第一个元素的索引为 0,最后一个元素的索引为元素总数减 1。

声明数组

要在 Bash 中声明数组,可以使用以下语法:

array_name=(value1 value2 value3 …)

例如,要声明一个水果名称数组,可以使用以下命令:

fruits=(apple banana cherry)

您也可以在单独的行上声明带有值的数组:

fruits=(
   apple
   banana
   cherry
)

访问数组元素

要访问数组中的元素,可以使用以下语法:

${array_name[index]}

例如,要访问 fruits 数组的第一个元素,可以使用以下命令:

echo ${fruits[0]}

这将输出 apple。

您还可以使用变量作为索引来访问数组中的元素:

index=1
echo ${fruits[$index]}

这将输出 banana。

数组长度

要获取数组的长度,可以使用以下语法:

${#array_name[@]}

例如,要获取 fruits 数组的长度,可以使用以下命令:

echo ${#fruits[@]}

这将输出 3。

遍历数组

要遍历数组,可以使用 for 循环。这是一个示例:

for fruit in "${fruits[@]}"
do
   echo $fruit
done

这将输出:

apple
banana
cherry

追加到数组

要将值追加到数组,可以使用以下语法:

array_name+=(value)

例如,要将“orange”追加到 fruits 数组,可以使用以下命令:

fruits+=(orange)

这会将“orange”添加到 fruits 数组的末尾。

从数组中删除元素

要从数组中删除元素,可以使用 unset 命令。这是一个示例:

unset array_name[index]

例如,要从 fruits 数组中删除第二个元素,可以使用以下命令:

unset fruits[1]

这将从 fruits 数组中删除“banana”。

多维数组

Bash 也支持多维数组。多维数组是数组的数组。这是一个示例:

matrix=(
   (1 2 3)
   (4 5 6)
   (7 8 9)
)

要访问多维数组中的元素,可以使用以下语法:

${array_name[row_index][column_index]}

例如,要访问 matrix 数组中第二行第三列的元素,可以使用以下命令:

echo ${matrix[1][2]}

这将输出 6。

其他主题

Bash 中的关联数组

除了我们迄今为止讨论的索引数组之外,Bash 还支持关联数组。关联数组是键值对的集合,其中键是值的唯一标识符。要声明关联数组,可以使用以下语法:

declare -A array_name

例如,要声明一个水果价格的关联数组,可以使用以下命令:

declare -A fruit_prices
fruit_prices=([apple]=0.50 [banana]=0.25 [cherry]=0.10)

要访问关联数组中的元素,可以使用键而不是索引:

echo ${fruit_prices[apple]}

这将输出 0.50。

您还可以使用 for 循环遍历关联数组:

for key in "${!fruit_prices[@]}"
do
   echo "$key: ${fruit_prices[$key]}"
done

这将输出:

apple: 0.50
banana: 0.25
cherry: 0.10

复制数组

要复制 Bash 中的数组,可以使用以下语法:

new_array=("${old_array[@]}")

例如,要复制 fruits 数组,可以使用以下命令:

new_fruits=("${fruits[@]}")

这将创建一个名为 new_fruits 的新数组,其中包含与 fruits 数组相同的值。

排序数组

Bash 提供了几种排序数组的方法。一种方法是使用 sort 命令,使用 -n 选项按数字排序数组,或使用 -r 选项按反序排序数组。这是一个示例:

sorted_fruits=($(echo "${fruits[@]}" | tr ' ' '
' | sort -r))

这将按反序对 fruits 数组进行排序,并将结果存储在 sorted_fruits 数组中。

另一种排序数组的方法是使用循环并将每个元素与其他元素进行比较。这是一个示例:

for ((i=0; i<${#fruits[@]}; i++))
do
   for ((j=i+1; j<${#fruits[@]}; j++))
      do
         if [[ "${fruits[i]}" > "${fruits[j]}" ]]
            then
			   temp=${fruits[i]}
               fruits[i]=${fruits[j]}
               fruits[j]=$temp
         fi
      done
done

这将按升序对 fruits 数组进行排序。

在 Bash 脚本中使用数组

数组在 Bash 脚本中非常有用。例如,您可以使用数组存储命令行参数、用户输入或命令的结果。这是一个使用数组存储用户输入的 Bash 脚本示例:

#!/bin/bash

echo "Enter your favorite fruits, separated by spaces:"
read -a fruits

echo "Your favorite fruits are:"
for fruit in "${fruits[@]}"
do
   echo $fruit
done

此脚本提示用户输入他们最喜欢的水果,将输入存储在名为 fruits 的数组中,然后显示数组的内容。

结论

在本文中,我们讨论了 Bash 数组的基础知识以及如何在 Linux 中使用它们。我们涵盖了声明数组、访问数组元素、数组长度、遍历数组、追加到数组、从数组中删除元素以及多维数组。Bash 数组是一个强大的功能,可以简化 Linux 中的许多任务,例如数据处理和管理。通过掌握 Bash 数组,您可以在 Linux 命令行工作中提高效率。

更新于:2023-03-24

936 次浏览

开启你的职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.