如何在 bash 中使用索引陣列
導讀 | 陣列是一種資料結構,表示具有相同資料型別的物件集合。bash 中支援兩種型別的陣列:關聯陣列或索引陣列。在本文中,將演示如何在 bash 中使用索引陣列。以下使用 shell 示例來說明索引陣列的詳細用法。 |
可以使用
declare -a
隱式宣告一個索引陣列。請注意,
declare -A
選項用於隱式宣告關聯陣列。
$ declare -a
你可以透過多種方式初始化索引陣列。由於 bash 陣列可以儲存整數或字串,因此可以使用整數陣列或字串陣列初始化給定的陣列變數。甚至可以混合儲存整數和字串。但是不能建立巢狀陣列,Bash 只支援一維陣列。
# 初始化一個索引陣列,同時顯式宣告它 # declare -a my_array=(2 4 6 8 10) # 初始化一個索引陣列,同時隱式宣告它 # my_array2=(orange apple grape mango) # 儲存整數和字串的混合鍵值陣列 # my_array3=(100 200 "bob" 500 "dan")
如果要使用預設值0來初始化較大的陣列中每個元素,可以使用for 迴圈。
# 初始化一個大小為 500 的陣列,預設值為0 # declare -a my_big_array=($(for i in {1..500}; do echo 0; done))
要在索引陣列中的特定索引位置讀取或寫入值,使用中括號
[]
指定索引。
# my_array2=(orange apple grape mango) # echo ${my_array2[2]} grape
如果不初始化陣列,預設情況下陣列中的每個元素都初始化為空值。例如:
[root@localhost ~]# vim my_array.sh #!/bin/bash declare -a my_array4 my_array[10]=apple if [ -z "${my_array[0]}" ]; then echo "The element at index 0 is empty" else echo "The element at index 0 is non-empty: ${my_array[0]}" fi
執行
後輸出的結果:
# sh my_array.sh The element at index 0 is empty
如果想知道索引陣列的長度時,可以使用以下帶有
#
和
@
符號的表示式。
# fruit_array=(orange apple grape mango) # echo "Array size: ${#fruit_array[@]}" Array size: 4
可以動態地將一個或多個值新增到陣列的末尾,而不是在陣列的特定位置寫入值。使用
+=
運算子來做到這一點。
# declare -a color_array=(red yellow) # color_array+=(blue) # color_array+=(black white)
另一種遞增索引陣列的方法如下。
# fruit_array=(orange apple grape mango) # fruit_array=(${fruit_array[@]} pineappe watermelon)
還可以利用陣列長度資訊將值附加到陣列的末尾。基本上你在陣列的最後一個索引處插入一個值。
如果要遍歷索引陣列,可以使用以下 for 迴圈。
[root@localhost ~]# vim array_for1.sh [root@localhost ~]# cat array_for1.sh #!/bin/bash declare -a color_array=(red yellow skyblue gray black white) for color in ${color_array[@]}; do echo $color done
以下是執行 後的輸出資訊:
[root@localhost ~]# sh array_for1.sh red yellow skyblue gray black white
或者,可以使用陣列索引遍歷陣列,如下所示:
[root@localhost ~]# vim array_for2.sh [root@localhost ~]# cat array_for2.sh #!/bin/bash declare -a color_array=(red yellow skyblue gray black white) for i in ${!color_array[@]}; do echo $i - ${color_array[$i]} done
以下是輸出資訊:
[root@localhost ~]# sh array_for2.sh 0 - red 1 - yellow 2 - skyblue 3 - gray 4 - black 5 - white
如果要列印陣列的內容,當然可以遍歷陣列,然後單獨列印每個值。另一種更方便的方法是使用
[@]
,返回陣列的內容。
# color_array=(red yellow skyblue gray black white) # echo ${color_array[@]} red yellow skyblue gray black white
bash 中的索引陣列支援不同型別的陣列切片,如下所示。
列印整個陣列:
${my_array[@]}
陣列切片的長度
len
, 從
index
開始:
${my_array[@]:index:len}
陣列切片的長度
len
, 從索引0開始:
${my_array[@]::len}
陣列切片從輸入的索引值開始,到陣列的結尾:
${my_array[@]:index}
檢視以下 bash 陣列切片示例以更好地瞭解其用法:
[root@localhost ~]# vim array_slice.sh [root@localhost ~]# cat array_slice.sh #!/bin/bash declare -a color_array=(red yellow skyblue gray black white pink purple) # 獲取整個陣列 echo "Slice #1: ${color_array[@]}" # 從索引3開始獲取2個值 echo "Slice #2: ${color_array[@]:3:2}" # 獲取陣列的前5個值 echo "Slice #3: ${color_array[@]::5}" # 獲取從索引4開始到結束的值 echo "Slice #4: ${color_array[@]:4}"
下面是執行指令碼額之後獲取的資料值:
[root@localhost ~]# sh array_slice.sh Slice #1: red yellow skyblue gray black white pink purple Slice #2: gray black Slice #3: red yellow skyblue gray black Slice #4: black white pink purple
本文原創地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2788826/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Bash Shell指令碼中的陣列使用例項指令碼陣列
- 如何在 JavaScript 中更好地使用陣列JavaScript陣列
- [譯文] 如何在 JavaScript 中更好地使用陣列JavaScript陣列
- js如何使用索引訪問陣列物件中的元素JS索引陣列物件
- DM7 陣列索引陣列索引
- 尋找陣列的中心索引陣列索引
- DM8管理陣列索引陣列索引
- Java陣列03:陣列使用Java陣列
- 如何在 .Net 7 中將 Query 繫結到陣列陣列
- JavaScript 陣列 指定索引位置插入元素JavaScript陣列索引
- 第六篇 numpy陣列索引陣列索引
- 如何在bash中使用{}範圍表示式
- 解析如何在Bash中編寫函式函式
- 陣列使用陣列
- 教你如何在.Net 7中將Query繫結到陣列陣列
- 教你如何在 elasticsearch 中重建索引Elasticsearch索引
- 陣列二:使用陣列可變函式為陣列排序陣列函式排序
- JavaScript 中陣列 sort() 方法的基本使用JavaScript陣列
- 聯合索引和多個單列索引使用中的索引命中情況及索引建立原則索引
- 陣列的使用陣列
- 易語言陣列 ,索引從 1 開始。陣列索引
- 【C#】山脈陣列的峰頂索引C#陣列索引
- 如何在不使用Java Collection API的情況下從陣列中刪除重複項JavaAPI陣列
- 關於在類陣列中使用陣列方法陣列
- 演算法基礎:動態規劃陣列中滾動陣列的使用演算法動態規劃陣列
- Java中陣列及相關類的使用Java陣列
- 【numpy學習筆記】陣列的切片,索引,迭代筆記陣列索引
- 陣列基礎使用陣列
- Java陣列的使用Java陣列
- Java陣列宣告建立和使用以及多維陣列、Arrays類、稀疏陣列Java陣列
- Ruby中的陣列陣列
- Go中的陣列Go陣列
- Java中的陣列Java陣列
- JavaScript中對陣列和陣列API的認識JavaScript陣列API
- C#快速入門教程(19)—— 索引器與陣列C#索引陣列
- NumPy 陣列建立方法與索引訪問詳解陣列索引
- LeetCode每日一題:找陣列的中心索引(No.724)LeetCode每日一題陣列索引
- 數學建模例題2.27 陣列元素的索引示例陣列索引