Bash 基礎知識系列 #5:在 Bash 中使用數(shù)組
在本系列的前面部分中,你了解了變量。變量中可以有單個值。
數(shù)組內(nèi)部可以有多個值。當你必須一次處理多個變量時,這會使事情變得更容易。你不必將各個值存儲在新變量中。
因此,不要像這樣聲明五個變量:
distro1=Ubuntu
distro2=Fedora
distro3=SUSE
distro4=Arch Linux
distro5=Nix
你可以在單個數(shù)組中初始化它們所有:
distros=(Ubuntu Fedora SUSE "Arch Linux" Nix)
與其他一些編程語言不同,你不使用逗號作為數(shù)組元素分隔符。
那挺好的。讓我們看看如何訪問數(shù)組元素。
在 Bash 中訪問數(shù)組元素
使用索引(數(shù)組中的位置)訪問數(shù)組元素。要訪問索引 N 處的數(shù)組元素,請使用:
${array_name[N]}
?? 與大多數(shù)其他編程語言一樣,Bash Shell 中的數(shù)組從索引 0 開始。這意味著第一個元素的索引為 0,第二個元素的索引為 1,第 n 個元素的索引為
n-1
。
因此,如果你想打印 SUSE,你將使用:
echo ${distros[2]}
Example of accessing array elements in bash shell
??
${
之后或}
之前不能有任何空格。你不能像${ array[n] }
那樣使用它。
一次訪問所有數(shù)組元素
假設你要打印數(shù)組的所有元素。
你可以一一使用 echo ${array[n]}
但這確實沒有必要。有一個更好更簡單的方法:
${array[*]}
這將為你提供所有數(shù)組元素。
Accessing all array elements at once in bash shell
在 Bash 中獲取數(shù)組長度
如何知道數(shù)組中有多少個元素? 有一個專門的方法 在 Bash 中獲取數(shù)組長度:
${#array_name[@]}
就這么簡單,對吧?
Get array length in bash
在 Bash 中添加數(shù)組元素
如果必須向數(shù)組添加其他元素,請使用 +=
運算符 將元素追加到 Bash 中的現(xiàn)有數(shù)組:
array_name+=("new_value")
這是一個例子:
Append new element to array
?? 追加元素時使用
()
很重要。
你還可以使用索引將元素設置在任何位置。
array_name[N]=new_value
但請記住使用正確的索引編號。 如果在現(xiàn)有索引上使用它,新值將替換該元素。
如果你使用“越界”索引,它仍會添加到最后一個元素之后。例如,如果數(shù)組長度為 6,并且你嘗試在索引 9 處設置新值,則該值仍將作為最后一個元素添加到第 7 個位置(索引 6)。
刪除數(shù)組元素
你可以使用 Shell 內(nèi)置的 unset
通過提供索引號來刪除數(shù)組元素:
unset array_name[N]
這是一個示例,我刪除了數(shù)組的第四個元素。
Delete array element in bash
你還可以通過 unset 來刪除整個數(shù)組:
unset array_name
?? Bash 中沒有嚴格的數(shù)據(jù)類型規(guī)則。你可以創(chuàng)建一個同時包含整數(shù)和字符串的數(shù)組。
??? 練習時間
讓我們練習一下你所學到的有關(guān) Bash 數(shù)組的知識。
練習 1:創(chuàng)建一個 Bash 腳本,其中包含五個最佳 Linux 發(fā)行版的數(shù)組。全部打印出來。
現(xiàn)在,用 “Hannah Montanna Linux” 替換中間的選擇。
練習 2:創(chuàng)建一個 Bash 腳本,該腳本接受用戶提供的三個數(shù)字,然后以相反的順序打印它們。
預期輸出:
Enter three numbers and press enter
12 23 44
Numbers in reverse order are: 44 23 12
我希望你喜歡通過本系列學習 Bash Shell 腳本。在下一章中,你將學習如何使用 if-else
。敬請關(guān)注。