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)
访问数组值
设置数组变量后,您可以按以下方式访问它 −
${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