數組
數組的定義和賦值
bash 提供對於一維數組的支持,需要注意的是,它並不支持多維數組。通常情況下,數組的索引為一個整數,從 0 開始計算。但是我們也可以使用字符串作為數組的索引,這樣的數組被稱為關聯數組。
在 bash 中,變量其實可以理解為只有一個元素的索引數組。如下示例:
1 |
|
上述定義的變量 var1 可以理解為一個只有一個元素的數組。
對於索引數組的定義,我們只需給對應的索引分配一個值,即會自動創建一個索引數組,如下所示:
1 |
# 給索引 0 分配一個值,即會自動創建索引數組 var2 |
除了上述介紹的定義索引數組的方式,我們還可以使用 var=(value1 value2 value3) 的方式
進行賦值,並且可以再賦值的時候指定索引。
如下示例:
1 |
|
在給索引數組分配值時,如果指定了索引,則將該索引分配給指定的值。
使用 read 定義
使用 read
命令接受輸入,並保存為一個數組,需要使用到 -a
參數,即array。
如下示例:
1 |
|
使用 declare 定義
declare
命令除了可以定義索引數組之外(使用 -a
參數),還可以定義關聯數組(使用 -A
參數)。
如下示例,我們使用 declare
聲明一個索引數組:
1 |
|
引用
對於數組的引用來說,我們有以下幾種方式:
方式 | 含義 |
---|---|
“${array_name[n]}” | 查看指定索引的元素,n 為數組的索引 |
“${array_name[*]}” | 所有的數組元素的值 |
“${array_name[@]}” | 所有的數組元素的值 |
“${!array_name[@]}” | 所有的索引 |
“${!array_name[*]}” | 所有的索引 |
“${array_name[*]:m}” | 從索引m 開始,后面的所有元素 |
“${array_name[*]:m:n}” | 從索引 m 開始,后面的 n 個元素 |
“${“”#array_name[*]}” | 顯示數組元素個數 |
數組刪除
刪除數組也是使用 unset
命令,但是我們可以僅刪除數組中的某個元素,也可以刪除整個數組
。
如下示例:
1 |
|