C語言中文網 目錄
首頁 > Shell腳本 閱讀:13,014

Shell數組:Shell數組定義以及獲取數組元素

和其他編程語言一樣,Shell 也支持數組。數組(Array)是若干數據的集合,其中的每一份數據都稱為元素(Element)。

Shell 并且沒有限制數組的大小,理論上可以存放無限量的數據。和C語言類似,Shell 數組元素的下標也是從 0 開始計數。

獲取數組中的元素要使用下標[ ],下標可以是一個整數,也可以是一個結果為整數的表達式;當然,下標必須大于等于 0。

遺憾的是,常用的 Bash Shell 只支持一維數組,不支持多維數組。

Shell 數組的定義

在 Shell 中,用括號( )來表示數組,數組元素之間用空格來分隔。由此,定義數組的一般形式為:

array_name=(ele1  ele2  ele3 ... elen)

注意,賦值號=兩邊不能有空格,必須緊挨著數組名和數組元素。

下面是一個定義數組的實例:
nums=(29 100 13 8 91 44)

Shell 是弱類型的,它并不要求所有數組元素的類型必須相同,例如:
arr=(20 56 "http://www.frifeb11.com/shell/")
第三個元素就是一個“異類”,前面兩個元素都是整數,而第三個元素是字符串。

Shell 數組的長度不是固定的,定義之后還可以增加元素。例如,對于上面的 nums 數組,它的長度是 6,使用下面的代碼會在最后增加一個元素,使其長度擴展到 7:
nums[6]=88

此外,你也無需逐個元素地給數組賦值,下面的代碼就是只給特定元素賦值:
ages=([3]=24 [5]=19 [10]=12)
以上代碼就只給第 3、5、10 個元素賦值,所以數組長度是 3。

獲取數組元素

獲取數組元素的值,一般使用下面的格式:

${array_name[index]}

其中,array_name 是數組名,index 是下標。例如:
n=${nums[2]}
表示獲取 nums 數組的第二個元素,然后賦值給變量 n。再如:
echo ${nums[3]}
表示輸出 nums 數組的第 3 個元素。

使用@*可以獲取數組中的所有元素,例如:
${nums[*]}
${nums[@]}
兩者都可以得到 nums 數組的所有元素。

完整的演示:
#!/bin/bash

nums=(29 100 13 8 91 44)
echo ${nums[@]}  #輸出所有數組元素
nums[10]=66  #給第10個元素賦值(此時會增加數組長度)
echo ${nums[*]}  #輸出所有數組元素
echo ${nums[4]}  #輸出第4個元素
運行結果:
29 100 13 8 91 44
29 100 13 8 91 44 66
91

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo