Unix / Linux - 使用 Shell 数组

  • 简述

    本章,我们将讨论如何在 Unix 中使用 shell 数组。shell 变量足以保存单个值。这些变量称为标量变量。
    Shell 支持一种不同类型的变量,称为 array variable. 这可以同时保存多个值。数组提供了一种对一组变量进行分组的方法。您可以使用存储所有其他变量的单个数组变量,而不是为所需的每个变量创建一个新名称。
    为 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