Linux中國

Bash 基礎知識系列 #5:在 Bash 中使用數組

本章將介紹如何在 Bash Shell 腳本中使用數組。學習添加元素、刪除元素和獲取數組長度。

在本系列的前面部分中,你了解了變數。變數中可以有單個值。

數組內部可以有多個值。當你必須一次處理多個變數時,這會使事情變得更容易。你不必將各個值存儲在新變數中。

因此,不要像這樣聲明五個變數:

distro1=Ubuntu
distro2=Fedora
distro3=SUSE
distro4=Arch Linux
distro5=Nix

你可以在單個數組中初始化它們所有:

distros=(Ubuntu Fedora SUSE "Arch Linux" Nix)

與其他一些編程語言不同,你不使用逗號作為數組元素分隔符。

那挺好的。讓我們看看如何訪問數組元素。

Bash 中訪問數組元素

使用索引(數組中的位置)訪問數組元素。要訪問索引 N 處的數組元素,請使用:

${array_name[N]}

? 與大多數其他編程語言一樣,Bash Shell 中的數組從索引 0 開始。這意味著第一個元素的索引為 0,第二個元素的索引為 1,第 n 個元素的索引為 n-1

因此,如果你想列印 SUSE,你將使用:

echo ${distros[2]}

Example of accessing array elements in bash shell

? ${ 之後或 } 之前不能有任何空格。你不能像 ${ array[n] } 那樣使用它。

一次訪問所有數組元素

假設你要列印數組的所有元素。

你可以一一使用 echo ${array[n]} 但這確實沒有必要。有一個更好更簡單的方法:

${array[*]}

這將為你提供所有數組元素。

Accessing all array elements at once in bash shell

在 Bash 中獲取數組長度

如何知道數組中有多少個元素? 有一個專門的方法 在 Bash 中獲取數組長度

${#array_name[@]}

就這麼簡單,對吧?

Get array length in bash

在 Bash 中添加數組元素

如果必須向數組添加其他元素,請使用 += 運算符 將元素追加到 Bash 中的現有數組

array_name+=("new_value")

這是一個例子:

Append new element to array

? 追加元素時使用 () 很重要。

你還可以使用索引將元素設置在任何位置。

array_name[N]=new_value

但請記住使用正確的索引編號。 如果在現有索引上使用它,新值將替換該元素。

如果你使用「越界」索引,它仍會添加到最後一個元素之後。例如,如果數組長度為 6,並且你嘗試在索引 9 處設置新值,則該值仍將作為最後一個元素添加到第 7 個位置(索引 6)。

刪除數組元素

你可以使用 Shell 內置的 unset 通過提供索引號來刪除數組元素:

unset array_name[N]

這是一個示例,我刪除了數組的第四個元素。

Delete array element in bash

你還可以通過 unset 來刪除整個數組:

unset array_name

? Bash 中沒有嚴格的數據類型規則。你可以創建一個同時包含整數和字元串的數組。

?️ 練習時間

讓我們練習一下你所學到的有關 Bash 數組的知識。

練習 1:創建一個 Bash 腳本,其中包含五個最佳 Linux 發行版的數組。全部列印出來。

現在,用 「Hannah Montanna Linux」 替換中間的選擇。

練習 2:創建一個 Bash 腳本,該腳本接受用戶提供的三個數字,然後以相反的順序列印它們。

預期輸出:

Enter three numbers and press enter
12 23 44
Numbers in reverse order are: 44 23 12

我希望你喜歡通過本系列學習 Bash Shell 腳本。在下一章中,你將學習如何使用 if-else。敬請關注。

(題圖:MJ/09477e2f-2bf9-4fdf-bc1e-c894a068adf2)

via: https://itsfoss.com/bash-arrays/

作者:Abhishek Prakash 選題:lkxed 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國