在 Linux Bash 中使用陣列

Yahya Irmak 2022年5月11日
在 Linux Bash 中使用陣列

Bash 有一個陣列結構(一些語言稱之為列表)。在本文中,我們將解釋這種結構。稍後,我們將研究 Bash 指令碼中的以下主題。

  • 陣列宣告
  • 訪問陣列中的值
  • 向陣列新增新值
  • 從陣列中刪除一個值

陣列是一種將相似資料儲存在一起的資料結構。陣列中的每個資料都有一個索引,第一個元素的索引是 0。我們可以通過迴圈順序訪問這些資料,也可以使用資料索引單獨訪問這些資料。我們還可以更改陣列、新增新值和刪除現有值。

在 Bash 中使用陣列

現在我們知道了陣列是什麼,我們可以檢查它在 Bash 中的使用。

宣告一個陣列

通過將值括在括號中來宣告陣列。值之間只有空格,沒有逗號等字元。下面是一個示例陣列宣告。

arr=("black" "white" "red" "blue" "green")

我們可以使用以下方法來宣告一個整數值陣列。

intArr=(1 2 3 4)
intArr=($(seq 1 4))
intArr=({1..4}) 

這些示例宣告瞭一個包含數字 1 到 4 的陣列。

訪問陣列

有許多不同的方法可以訪問陣列中的資料。例如,我們可以列印整個陣列,使用索引訪問單個元素,或者使用迴圈依次訪問每個元素。讓我們一一解釋每種方法。

訪問整個陣列

我們可以使用 [*][@] 命令來訪問陣列中的所有值。例如,讓我們使用這些命令來列印我們上面定義的 arr 陣列中的所有值。

arr=("black" "white" "red" "blue" "green")
echo "With *: ${arr[*]}"
echo "With @: ${arr[@]}"

訪問整個陣列

使用索引訪問元素

陣列中第一個元素的索引為 0,隨後元素的索引依次增加。我們可以通過陣列中元素的索引號來訪問該元素。例如,我們使用下面的 Bash 程式碼來獲取 arr 陣列中的 red 值。

arr=("black" "white" "red" "blue" "green")
echo "${arr[2]}"

使用索引訪問元素

使用迴圈訪問陣列元素

我們可以使用 for 迴圈一個一個地訪問陣列的所有元素。下面是 Bash 指令碼,它將把 arr 陣列中的每種顏色列印到螢幕上。

arr=("black" "white" "red" "blue" "green")
for color in ${arr[@]}; do
  echo $color
done

使用迴圈訪問元素

如果我們想連同索引號一起訪問這些值,我們可以使用下面的程式碼。

arr=("black" "white" "red" "blue" "green")
for i in ${!arr[@]}; do
  echo "$i: ${arr[$i]}"
done

${!arr[@]} 命令返回陣列中所有值的索引。然後,使用這些索引訪問元素。

使用迴圈訪問編號元素

向陣列新增新元素

要將新元素新增到陣列中,我們可以為新值分配索引號或使用+= 運算子。

arr=("black" "white" "red" "blue" "green")
echo "Before adding purple: ${arr[@]}"
arr[5]="purple" # or use arr+=("purple"), exactly same
echo "After adding purple: ${arr[@]}"

將元素新增到陣列

從陣列中刪除元素

我們可以使用 unset 命令刪除陣列中的任何資料,甚至完全刪除陣列本身。

arr=("black" "white" "red" "blue" "green")
echo "Before removing white: ${arr[@]}"
unset arr[1]
echo "After removing white: ${arr[@]}"

從陣列中刪除一個元素

作者: Yahya Irmak
Yahya Irmak avatar Yahya Irmak avatar

Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.

LinkedIn

相關文章 - Bash Array