如何在 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陣列
- bash指令碼中的普通陣列和關聯陣列指令碼陣列
- [譯文] 如何在 JavaScript 中更好地使用陣列JavaScript陣列
- js如何使用索引訪問陣列物件中的元素JS索引陣列物件
- jQuery元素在陣列中的索引位置jQuery陣列索引
- js如何獲取指定陣列元素在陣列中的索引值JS陣列索引
- 為何在查詢中索引未被使用索引
- Oracle使用由字串索引的二維陣列Oracle字串索引陣列
- 如何在 Bash 中抽取子字串字串
- php關聯陣列和索引陣列差別PHP陣列索引
- PowerShell中的陣列使用陣列
- DM7 陣列索引陣列索引
- javascript陣列可以使用字串作為索引JavaScript陣列字串索引
- java之陣列的索引,排序以及二維陣列Java陣列索引排序
- 如何在 .Net 7 中將 Query 繫結到陣列陣列
- Java 中的陣列 如何使用Java陣列
- Oracle中陣列使用方法Oracle陣列
- DM8管理陣列索引陣列索引
- 尋找陣列的中心索引陣列索引
- 解析如何在Bash中編寫函式函式
- Java陣列03:陣列使用Java陣列
- 如何在MATLAB中統計陣列中相同元素的個數?Matlab陣列
- 教你如何在.Net 7中將Query繫結到陣列陣列
- Linux shell 中陣列的使用Linux陣列
- JavaScript 陣列 指定索引位置插入元素JavaScript陣列索引
- 第六篇 numpy陣列索引陣列索引
- 為何在查詢中索引未被使用(二)——問題解答索引
- 教你如何在 elasticsearch 中重建索引Elasticsearch索引
- JavaScript 中陣列 sort() 方法的基本使用JavaScript陣列
- toString 方法在陣列中的使用陣列
- 陣列二:使用陣列可變函式為陣列排序陣列函式排序
- 關於Ubuntu下 如何在bash使用phpstudy 套件中的php 的方法UbuntuPHP套件
- js刪除陣列指定索引的元素JS陣列索引
- for迴圈訪問php的索引陣列PHP索引陣列
- 【MOS:1549181.1】為何在查詢中索引未被使用--為什麼索引沒有被使用索引
- 如何在不使用Java Collection API的情況下從陣列中刪除重複項JavaAPI陣列
- 為何在查詢中索引未被使用 (文件 ID 1549181.1)索引