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
廣告