天天看點

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

Bash 提供了兩種類型的數組,分别是索引數組(indexed array)和關聯數組(associative array)。本文主要介紹索引數組的基本用法。

Bash 提供的數組都是一維數組。

任何變量都可以用作索引數組。

通過 declare 關鍵字可以顯式的聲明一個索引數組。

數組的大小是不受限制的。

索引數組的元素的索引不必是連續的。

通過從零開始的整數引用數組元素。

除非另外注明,索引數組必須使用非負的整數索引元素。

通過指派語句可以隐式的建立索引數組:

通過給索引為 0 的元素指派,變量 myArr 會被初始化成一個索引數組。

當然也可以這樣:

不用必須從索引 0 開始指派。

通過 declare 關鍵字和 -a 選項可以顯式的聲明索引數組:

然後進行初始化:

也可以在聲明的時候進行初始化:

或者在聲明後隻初始化某個元素:

引用數組元素稍微麻煩些,不僅要指定元素的索引位置,還需要使用 ${} 符号。請注意,索引數組的下标從 0 開始,且不能為負數(真希望所有程式設計語言中的數組元素都從 0 開始索引!)。

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

如果不小心引用了沒有指派的元素呢?不用擔心,這裡沒有程式崩潰的問題,隻不過沒有輸出内容而已:

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

我們還可以輕松的輸出數組的全部元素:

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

第四個元素的索引是不連續的。我們可以擷取到所有已經指派元素的下标進行檢視:

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

變量也可以用來索引數組元素:

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

對于索引數組,如果你不按規矩引用數組元素可能産生一些詭異的狀況。比如,用一個字元串代替非負的整數去索引元素會發生什麼?

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

這往往不是你想要的結果。實際上,無論你寫什麼樣的字元串,都會被當做 0 來處理。

比較常見的數組操作是在數組的尾部添加新的元素(嚴謹點說,這應該是隊列的一個特征!):

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

請注意最後一行的輸出,這樣添加的元素的索引是連續的。

把兩個數組連接配接成一個也是比較常見的操作:

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

提取部分數組元素:

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

在 Bash 中,引用數組長度的文法多少有些奇特:

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

數組長度是指被指派了的元素個數:

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

我們還可以擷取到某個元素的長度:

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

哈哈,看起來有些像二維數組了!

通過 for 語句可以像其它程式設計語言那樣周遊數組中的元素:

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組
Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

索引為 1 的元素已經為空了,其實數組的長度也發生了變化:

此時數組的長度已經變成了 2。

下面來個複雜點的:

上面的代碼移除了元素 d:

Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組
Bash : 索引數組索引數組的基本特點自動建立索引數組顯式聲明一個索引數組引用數組元素添加數組元素提取子數組數組的長度周遊數組元素删除數組元素清空數組

本文轉自xsster51CTO部落格,原文連結: ,如需轉載請自行聯系原作者

本文轉自xsster51CTO部落格,原文連結: http://blog.51cto.com/12945177/1948527,如需轉載請自行聯系原作者