Unix / Linux - 使用Shell数组

在本章中,我们将讨论如何在Unix中使用shell数组. shell变量足以容纳单个值.这些变量称为标量变量.

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

所有针对Shell变量讨论的命名规则都适用于命名数组.

定义数组值

数组变量和标量变量之间的差异可以解释如下.

假设您试图将各个学生的姓名表示为一组变量.每个变量都是一个标量变量,如下所示;

NAME01="Zara"
NAME02="Qadir"
NAME03="Mahnaz"
NAME04="Ayan"
NAME05="Daisy"

我们可以使用单个数组来存储所有上述名称.以下是创建数组变量的最简单方法.这有助于为其中一个索引赋值.

array_name[index]=value

这里 array_name 是数组的名称, index 是要设置的数组中项目的索引,value是值你想为那个项目设置.

例如,以下命令 :

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"

如果你使用 ksh shell,这里是数组初始化和减号的语法;

set -A array_name value1 value2 ... valuen

如果您正在使用 bash shell,这里是数组初始化的语法 :

array_name=(value1 ... valuen)

访问数组值

设置任何ar后ray变量,您可以按如下方式访问它;<

${array_name[index]}

这里 array_name 是数组的名称, index 是要访问的值的索引.下面是一个理解概念&减去的例子;

#!/bin/sh

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"

以上示例将生成以下结果 :

$./test.sh
First Index: Zara
Second Index: Qadir

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

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

这里 array_name 是您感兴趣的数组的名称.以下示例将帮助您理解概念 :

#!/bin/sh

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Method: ${NAME[*]}"
echo "Second Method: ${NAME[@]}"

以上示例将生成以下结果 :

$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy