在任何编程语言中,当你想使用单个变量使用多个数据时,你必须使用数组变量。数据列表可以使用数组变量进行分配和使用。Bash是一种弱类型的语言,不需要为声明变量而定义任何数据类型。Bash中的数组声明与其他标准的编程语言有一点不同。在bash中可以声明两种类型的数组。 数值数组和关联数组。如果一个数组的索引是数字,那么它被称为数字数组,如果一个数组的索引是字符串,它被称为关联数组。本教程通过实例描述了如何声明数字数组、关联数组,以及如何使用for循环迭代数组中的元素。
例1:数字数组声明。
数组的默认索引是数字,所有的值都被当作字符串值。这里声明了一个包含5个字符串值的简单数字数组。这里使用echo命令来分别打印每个数组的值。如果你想通过单个echo 命令打印所有的数组值,那么必须在数组的索引中使用 "*"符号。用下面的脚本创建一个bash文件,显示在bash脚本中声明一个数组的两种方法。
#!/bin/bash
MyArray=(HTML Javascript CSS JQuery Bootstrap)
# 单独打印5个值
echo "---------- 单独打印5个值---------------"
echo {MyArray\[0\]}
echo {MyArray[1]}
echo {MyArray\[2\]}
echo {MyArray[3]}
echo ${MyArray[4]}
#通过使用*打印所有数值
echo "-----------------打印所有数值-------------------"
echo ${MyArray[*]}
输出。
执行上述脚本后会出现以下输出。

例2:关联数组声明。
在关联数组中,数组的每个索引都需要单独声明。用下面的脚本创建一个bash文件来了解关联数组在bash中的使用。在下面的例子中声明了一个4个元素的关联数组。像前面的例子一样,可以通过分别使用每个索引来打印该数组的值。只有关联数组的索引可以通过使用"!"和"@"符号来打印。
#!/bin/bash
# 关联数组声明
declare -AMyArr
# 值初始化
MyArr=( [mark]=79 [john]=93 [ella]=87 [mila]=83 )
# 打印数值
echo {MyArr\[mark\]}
echo {MyArr[john]}
echo {MyArr\[ella\]}
echo {MyArr[mila]}
# 打印索引
echo ${!MyArr[@]}
输出。
执行上述脚本后会出现以下输出。

Example-3: 使用for循环读取数组值:
任何bash数组的元素总数都可以通过使用下面例子第一部分中的**"#"和"*"** 符号来计算。用下面的脚本创建一个bash文件,了解使用循环读取数组值的方法。For 循环通常用于遍历数组的值。你也可以通过使用for循环分别读取数组值和数组索引。在下面的例子中使用了不同的循环来读取数组索引,数组值,以及两者。
#!/bin/bash
# 关联数组声明
declare -AMyArr
# 值初始化
MyArr=( [os]=Windows[web]=PHP[db]=Oracle)
echo "元素的总数=${#MyArr[*]}"
echo "Array values are"
forvaluein {MyArr\[@\]}
do
echo value
done
echo "Array indexes are"
forkeyin {!MyArr\[@\]}
do
echo key
done
echo "Array values and indexes:"
forkeyin {! MyArr\[\*\]}
do
echo "key=>{MyArr\[key]}"
done
输出:
执行上述脚本后会出现以下输出。

例4:向数组中添加元素
新的元素可以通过不同的方式添加到数组中。在这个例子中显示了使用速记操作符(+=)添加一个或多个元素的方法。用下面的脚本创建一个bash文件,以了解如何将新元素插入数组中。
#!/bin/bash
# 声明一个数字数组
declare -aMyArr
# 用两个元素初始化数组
MyArr=(Ubuntu CentOS)
# 打印元素总数
echo "Total number of elements of the current array=${#MyArr[*]}"
# 添加一个元素
MyArr+=(Fedora)
# 添加一个元素后打印元素总数
echo "添加一个元素后的元素总数=${#MyArr[*]}"
# 添加两个元素
MyArr+=(RedHat LinuxMint)
# 打印添加两个元素后的元素总数
echo "添加两个元素后的元素总数=${#MyArr[*]}"
# 打印数组的所有元素
echo "数组元素是:"
echo "${MyArr[@]}"
输出。
执行上述脚本后会出现以下输出.

例5:从数组中删除一个元素
`unset`命令用来从数组中删除一个或全部元素.用下面的脚本创建一个bash文件,以了解如何从一个数字数组中删除一个和所有的元素。
#!/bin/bash
# 声明一个数字数组
declare -aMyArr
# 用两个元素初始化数组
MyArr=(Dell HP Lenavo Acer Asus Avita)
# 打印元素总数
echo "Total number of elements of the current array=${#MyArr[*]}"
# 删除前打印数组数值
echo "Array values before delete:"
echo "${MyArr[@]}"
# 删除第四个元素
unsetMyArr[3]
# 删除一个元素后打印元素总数
echo "删除一个元素后元素总数=${#MyArr[*]}"
# 删除后打印阵列值
echo "删除一个元素后阵列值:"
echo "${MyArr[@]}"
# 删除所有元素
unsetMyArr
# 删除所有元素后打印数组值
echo "删除所有元素后数组值:"
echo "${MyArr[@]}"
输出。
执行上述脚本后会出现以下输出。

例6:打印多个单词的字符串值
数组的值需要用双引号("")括起来,以便将多个单词的字符串值添加到一个数组中。用下面的脚本创建一个bash文件,其中一个相关的数组已经初始化为多个单词的字符串值。
#!/bin/bash
# 声明一个关联数组
declare -AMyArr
# 用多个单词的字符串值初始化数组
MyArr=([cse-101]="计算机基础 " [cse-207]="Java编程 " [cse-312]="网络编程")
# 打印多个单词的数组值
echo "数组值是。"
forvalin "{MyArr\[@\]}";do
echo val
done
输出。
执行上述脚本后会出现以下输出。

结论。
数组在编程中被用于许多目的。本教程中已经展示了数组在bash中的一些常见和非常简单的用途。在练习了上面的例子之后,bash数组的基本概念对于bash用户来说将被清除,他们将能够在他们的脚本中适当地使用bash数组。