在Shell中使用数组

在本章中,我们将讨论如何在Linux Shell中使用数组变量。 Shell变量用于保存单个值。这些变量称为标量变量。

Shell支持一种不同类型的变量,称为数组变量。 这可以同时保存多个值。 数组提供了一种对一组变量进行分组的方法。 您可以使用存储所有变量的单个数组变量,而不是为所需的每个变量创建一个新名称。

为Shell变量讨论的所有命名规则在命名数组时都适用。

定义数组变量

数组变量和标量变量之间的区别可以解释如下。

假设您试图将不同学生的姓名表示为一组变量。 每个单独的变量都是一个标量变量,如下所示:

NAME01="jiu Tong"
NAME02="Zhang Mazi"
NAME03="Jiang Wen"
NAME04="Ge You"
NAME05="Liu Jialing"

我们可以使用单个数组来存储上述所有名称。 以下是创建数组变量的最简单方法。

array_name[index]=value

这里array_name是数组的名称,index是数组中要设置的项的索引,value是要为该项设置的值。

例如:

NAME[0]="jiu Tong"
NAME[1]="Zhang Mazi"
NAME[2]="Jiang Wen"
NAME[3]="Ge You"
NAME[4]="Liu Jialing"

访问数组的值

设置任何数组变量后,按如下方式访问它

${array_name[index]}

这里array_name是数组的名称,index是要访问的值的索引。 如下例所示:

#!/bin/bash

NAME[0]="jiu Tong"
NAME[1]="Zhang Mazi"
NAME[2]="Jiang Wen"
NAME[3]="Ge You"
NAME[4]="Liu Jialing"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"

上面的例子将产生以下输出:

$./test.sh
First Index: jiu Tong
Second Index: Zhang Mazi

您可以通过以下方式访问数组中的所有项:

${array_name[*]}
${array_name[@]}

这里array_name是你的数组的名称。 下面的例子将帮助你理解这个概念:

#!/bin/bash

NAME[0]="jiu Tong"
NAME[1]="Zhang Mazi"
NAME[2]="Jiang Wen"
NAME[3]="Ge You"
NAME[4]="Liu Jialing"
echo "First Index: ${NAME[*]}"
echo "Second Index: ${NAME[@]}"

上面的例子将产生以下输出:

$./test.sh
First Method: jiu Tong Zhang Mazi Jiang Wen Ge Liu Jialing
Second Method: jiu Tong Zhang Mazi Jiang Wen Ge Liu Jialing