shell變數是有足夠的能力保持一個單一的值。這種型別的變數被稱為標量變數。
Shell支援不同型別的變數稱為陣列變數,可以在同一時間容納多個值。陣列,提供了一組變數進行分組的方法的。而不是建立一個新的名稱為每個變數所需要的,你可以使用一個單一的陣列儲存所有其他變數的變數。
所有討論shell變數的命名規則將適用陣列命名。
一個陣列變數和標量變數之間的差異可以解釋如下。
說,你正試圖表示各種學生為變數集的名字。每一個單個變數是一個標量變數,如下所示:
NAME01="Zara" NAME02="Qadir" NAME03="Mahnaz" NAME04="Ayan" NAME05="Daisy"
我們可以用一個單一的陣列來儲存所有上述提及的名稱。以下是最簡單的方法建立一個陣列變數分配一個值,其索引之一。這是表示,如下所示:
array_name[index]=value
array_name 是陣列名,索引是在陣列中,你要設定的專案索引,值是你想要的值設定該專案。
作為一個例子,下面的命令:
NAME[0]="Zara" NAME[1]="Qadir" NAME[2]="Mahnaz www.tw511.com" 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]}"
This would produce following result:
$./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