Bash 基礎(chǔ)知識(shí)系列 #5:在 Bash 中使用數(shù)組

在本系列的前面部分中,你了解了變量。變量中可以有單個(gè)值。
數(shù)組內(nèi)部可以有多個(gè)值。當(dāng)你必須一次處理多個(gè)變量時(shí),這會(huì)使事情變得更容易。你不必將各個(gè)值存儲(chǔ)在新變量中。
因此,不要像這樣聲明五個(gè)變量:
distro1=Ubuntu
distro2=Fedora
distro3=SUSE
distro4=Arch Linux
distro5=Nix你可以在單個(gè)數(shù)組中初始化它們所有:
distros=(Ubuntu Fedora SUSE "Arch Linux" Nix)與其他一些編程語(yǔ)言不同,你不使用逗號(hào)作為數(shù)組元素分隔符。
那挺好的。讓我們看看如何訪(fǎng)問(wèn)數(shù)組元素。
在 Bash 中訪(fǎng)問(wèn)數(shù)組元素
使用索引(數(shù)組中的位置)訪(fǎng)問(wèn)數(shù)組元素。要訪(fǎng)問(wèn)索引 N 處的數(shù)組元素,請(qǐng)使用:
${array_name[N]}?? 與大多數(shù)其他編程語(yǔ)言一樣,Bash Shell 中的數(shù)組從索引 0 開(kāi)始。這意味著第一個(gè)元素的索引為 0,第二個(gè)元素的索引為 1,第 n 個(gè)元素的索引為
n-1。
因此,如果你想打印 SUSE,你將使用:
echo ${distros[2]}
Example of accessing array elements in bash shell
??
${之后或}之前不能有任何空格。你不能像${ array[n] }那樣使用它。
一次訪(fǎng)問(wèn)所有數(shù)組元素
假設(shè)你要打印數(shù)組的所有元素。
你可以一一使用 echo ${array[n]} 但這確實(shí)沒(méi)有必要。有一個(gè)更好更簡(jiǎn)單的方法:
${array[*]}這將為你提供所有數(shù)組元素。
Accessing all array elements at once in bash shell
在 Bash 中獲取數(shù)組長(zhǎng)度
如何知道數(shù)組中有多少個(gè)元素? 有一個(gè)專(zhuān)門(mén)的方法 在 Bash 中獲取數(shù)組長(zhǎng)度:
${#array_name[@]}就這么簡(jiǎn)單,對(duì)吧?
Get array length in bash
在 Bash 中添加數(shù)組元素
如果必須向數(shù)組添加其他元素,請(qǐng)使用 += 運(yùn)算符 將元素追加到 Bash 中的現(xiàn)有數(shù)組:
array_name+=("new_value")這是一個(gè)例子:
Append new element to array
?? 追加元素時(shí)使用
()很重要。
你還可以使用索引將元素設(shè)置在任何位置。
array_name[N]=new_value但請(qǐng)記住使用正確的索引編號(hào)。 如果在現(xiàn)有索引上使用它,新值將替換該元素。
如果你使用“越界”索引,它仍會(huì)添加到最后一個(gè)元素之后。例如,如果數(shù)組長(zhǎng)度為 6,并且你嘗試在索引 9 處設(shè)置新值,則該值仍將作為最后一個(gè)元素添加到第 7 個(gè)位置(索引 6)。

刪除數(shù)組元素
你可以使用 Shell 內(nèi)置的 unset 通過(guò)提供索引號(hào)來(lái)刪除數(shù)組元素:
unset array_name[N]這是一個(gè)示例,我刪除了數(shù)組的第四個(gè)元素。
Delete array element in bash
你還可以通過(guò) unset 來(lái)刪除整個(gè)數(shù)組:
unset array_name?? Bash 中沒(méi)有嚴(yán)格的數(shù)據(jù)類(lèi)型規(guī)則。你可以創(chuàng)建一個(gè)同時(shí)包含整數(shù)和字符串的數(shù)組。
??? 練習(xí)時(shí)間
讓我們練習(xí)一下你所學(xué)到的有關(guān) Bash 數(shù)組的知識(shí)。
練習(xí) 1:創(chuàng)建一個(gè) Bash 腳本,其中包含五個(gè)最佳 Linux 發(fā)行版的數(shù)組。全部打印出來(lái)。
現(xiàn)在,用 “Hannah Montanna Linux” 替換中間的選擇。
練習(xí) 2:創(chuàng)建一個(gè) Bash 腳本,該腳本接受用戶(hù)提供的三個(gè)數(shù)字,然后以相反的順序打印它們。
預(yù)期輸出:
Enter three numbers and press enter
12 23 44
Numbers in reverse order are: 44 23 12我希望你喜歡通過(guò)本系列學(xué)習(xí) Bash Shell 腳本。在下一章中,你將學(xué)習(xí)如何使用 if-else。敬請(qǐng)關(guān)注。


































