Linux 中的 Bash 陣列簡介
介紹
Bash 是一種流行的命令列 Shell,用於 Linux 和其他基於 Unix 的作業系統。Bash 的強大功能之一是它對陣列的支援。陣列是值的集合,可以使用索引訪問。在本文中,我們將討論 Bash 陣列的基礎知識以及如何在 Linux 中使用它們。
什麼是 Bash 陣列?
Bash 陣列是一個可以儲存多個值的變數。這些值儲存在連續的記憶體位置,並且可以使用索引訪問。陣列中第一個元素的索引為 0,最後一個元素的索引為元素總數減 1。
宣告陣列
要在 Bash 中宣告陣列,可以使用以下語法:
array_name=(value1 value2 value3 …)
例如,要宣告一個水果名稱陣列,可以使用以下命令:
fruits=(apple banana cherry)
您也可以在單獨的行上宣告帶有值的陣列:
fruits=( apple banana cherry )
訪問陣列元素
要訪問陣列中的元素,可以使用以下語法:
${array_name[index]}
例如,要訪問 fruits 陣列的第一個元素,可以使用以下命令:
echo ${fruits[0]}
這將輸出 apple。
您還可以使用變數作為索引來訪問陣列中的元素:
index=1 echo ${fruits[$index]}
這將輸出 banana。
陣列長度
要獲取陣列的長度,可以使用以下語法:
${#array_name[@]}
例如,要獲取 fruits 陣列的長度,可以使用以下命令:
echo ${#fruits[@]}
這將輸出 3。
遍歷陣列
要遍歷陣列,可以使用 for 迴圈。這是一個示例:
for fruit in "${fruits[@]}" do echo $fruit done
這將輸出:
apple banana cherry
追加到陣列
要將值追加到陣列,可以使用以下語法:
array_name+=(value)
例如,要將“orange”追加到 fruits 陣列,可以使用以下命令:
fruits+=(orange)
這會將“orange”新增到 fruits 陣列的末尾。
從陣列中刪除元素
要從陣列中刪除元素,可以使用 unset 命令。這是一個示例:
unset array_name[index]
例如,要從 fruits 陣列中刪除第二個元素,可以使用以下命令:
unset fruits[1]
這將從 fruits 陣列中刪除“banana”。
多維陣列
Bash 也支援多維陣列。多維陣列是陣列的陣列。這是一個示例:
matrix=( (1 2 3) (4 5 6) (7 8 9) )
要訪問多維陣列中的元素,可以使用以下語法:
${array_name[row_index][column_index]}
例如,要訪問 matrix 陣列中第二行第三列的元素,可以使用以下命令:
echo ${matrix[1][2]}
這將輸出 6。
其他主題
Bash 中的關聯陣列
除了我們迄今為止討論的索引陣列之外,Bash 還支援關聯陣列。關聯陣列是鍵值對的集合,其中鍵是值的唯一識別符號。要宣告關聯陣列,可以使用以下語法:
declare -A array_name
例如,要宣告一個水果價格的關聯陣列,可以使用以下命令:
declare -A fruit_prices fruit_prices=([apple]=0.50 [banana]=0.25 [cherry]=0.10)
要訪問關聯陣列中的元素,可以使用鍵而不是索引:
echo ${fruit_prices[apple]}
這將輸出 0.50。
您還可以使用 for 迴圈遍歷關聯陣列:
for key in "${!fruit_prices[@]}" do echo "$key: ${fruit_prices[$key]}" done
這將輸出:
apple: 0.50 banana: 0.25 cherry: 0.10
複製陣列
要複製 Bash 中的陣列,可以使用以下語法:
new_array=("${old_array[@]}")
例如,要複製 fruits 陣列,可以使用以下命令:
new_fruits=("${fruits[@]}")
這將建立一個名為 new_fruits 的新陣列,其中包含與 fruits 陣列相同的值。
排序陣列
Bash 提供了幾種排序陣列的方法。一種方法是使用 sort 命令,使用 -n 選項按數字排序陣列,或使用 -r 選項按反序排序陣列。這是一個示例:
sorted_fruits=($(echo "${fruits[@]}" | tr ' ' '
' | sort -r))
這將按反序對 fruits 陣列進行排序,並將結果儲存在 sorted_fruits 陣列中。
另一種排序陣列的方法是使用迴圈並將每個元素與其他元素進行比較。這是一個示例:
for ((i=0; i<${#fruits[@]}; i++)) do for ((j=i+1; j<${#fruits[@]}; j++)) do if [[ "${fruits[i]}" > "${fruits[j]}" ]] then temp=${fruits[i]} fruits[i]=${fruits[j]} fruits[j]=$temp fi done done
這將按升序對 fruits 陣列進行排序。
在 Bash 指令碼中使用陣列
陣列在 Bash 指令碼中非常有用。例如,您可以使用陣列儲存命令列引數、使用者輸入或命令的結果。這是一個使用陣列儲存使用者輸入的 Bash 指令碼示例:
#!/bin/bash echo "Enter your favorite fruits, separated by spaces:" read -a fruits echo "Your favorite fruits are:" for fruit in "${fruits[@]}" do echo $fruit done
此指令碼提示使用者輸入他們最喜歡的水果,將輸入儲存在名為 fruits 的陣列中,然後顯示陣列的內容。
結論
在本文中,我們討論了 Bash 陣列的基礎知識以及如何在 Linux 中使用它們。我們涵蓋了宣告陣列、訪問陣列元素、陣列長度、遍歷陣列、追加到陣列、從陣列中刪除元素以及多維陣列。Bash 陣列是一個強大的功能,可以簡化 Linux 中的許多工,例如資料處理和管理。透過掌握 Bash 陣列,您可以在 Linux 命令列工作中提高效率。