bash中的數組


數組

數組的定義和賦值

bash 提供對於一維數組的支持,需要注意的是,它並不支持多維數組。通常情況下,數組的索引為一個整數,從 0 開始計算。但是我們也可以使用字符串作為數組的索引,這樣的數組被稱為關聯數組。

在 bash 中,變量其實可以理解為只有一個元素的索引數組。如下示例:

1
2
3
4
5
6
7
8
9
10
11

var1="hello-bash"

# 查看 var1 的值
echo $var1

# 查看 var1 數組中索引為 0 的值,即第一個元素,關於引用數組中元素的內容我們在下面的內容將會學習到
echo ${var1[0]}

# 查看 var1 數組中索引為 1 的值,結果為空
echo ${var1[1]}

上述定義的變量 var1 可以理解為一個只有一個元素的數組。

對於索引數組的定義,我們只需給對應的索引分配一個值,即會自動創建一個索引數組,如下所示:

1
2
3
4
5
6
7
8
# 給索引 0 分配一個值,即會自動創建索引數組 var2
var2[0]=hello-bash001
var2[1]=hello-bash002
# 查看數組 var2 索引 `0` 對應的值,使用下述兩種方式
echo $var2
echo ${var2[0]}
# 查看索引為 `1` 的值
echo ${var2[1]}

除了上述介紹的定義索引數組的方式,我們還可以使用 var=(value1 value2 value3) 的方式

進行賦值,並且可以再賦值的時候指定索引。

如下示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 定義數組 var3
var3=(a b c)

# 查看數組中所有的元素
echo ${var3[*]}

# 查看數組中指定索引的值
echo ${var3[0]}
echo ${var3[1]}

# 定義數組 var4,使用指定索引定義
var4=([0]=a b [1]=c [9]=d)

# 查看相應的值
echo ${var4[*]}
echo 大專欄  bash中的數組riable">${var4[1]}
echo ${var4[9]}

在給索引數組分配值時,如果指定了索引,則將該索引分配給指定的值。

使用 read 定義

使用 read 命令接受輸入,並保存為一個數組,需要使用到 -a 參數,即array。

如下示例:

1
2
3
4
5

$ read -a var5

# 查看數組 var5 的所有值
echo ${var5[*]}

使用 declare 定義

declare 命令除了可以定義索引數組之外(使用 -a 參數),還可以定義關聯數組(使用 -A參數)。

如下示例,我們使用 declare 聲明一個索引數組:

1
2
3
4
5

$ declare -a var6=(a b c d)

# 查看 var6 的全部元素
$ echo ${var6[*]}

引用

對於數組的引用來說,我們有以下幾種方式:

方式 含義
“${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
2
3
4
5
6
7
8
9
10
11
12
13

# 定義數組
$ array=(1 2 3)

# 打印數組中的所有元素
$ echo ${array[*]}
1 2 3
#
$ unset array[1] # 刪除索引為1的元素,注意是從0開始
$ echo $array[*]
1 3
$ unset array # 刪除整個數組
$ echo ${array[*]}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM