linux shell 陣列新增元素

2021-10-04 08:29:55 字數 3456 閱讀 9587

向shell陣列新增元素有多種方法,每種方法在使用時都有一些需要注意的地方,沒有見過這方面的總結資料,所以自己總結一下。

array_name[index]=value
最簡單的新增方式,直接用下標index為陣列元素賦值,在使用時需要注意的是就是需要確保下標index處原本是沒有值的,否則會替換index處原本的值。

array_name[$]=value

# 或array_name[$]=value

以陣列長度為下標新增,每次只能增加乙個元素。但此方法有乙個前提,就是陣列中的元素下標必須是連續的,否則會存在替換已有元素的風險。例如:

arr=([1]="a" [2]="b")

echo $

arr[$]="c"

echo $

實際上並有新增元素,而是將下標為2的元素值「b」替換為了「c」。

array_name=("$" value1 ... valuen)
這種方式不需要下標連續,可同時新增多個元素,但是有一些要注意的地方:

首先,使用此方式新增元素後,陣列中原有元素的下標會重置,會從0開始變成連續的,如果不希望改變下標則不能使用這種方式。

其次,雙引號不能省略,否則,當陣列array_name中存在包含空格的元素時會按空格將元素拆分成多個。

最後,不能將「@」替換為「*」,雖然在輸出陣列元素時可以相互替換,如果替換為「*」,不加雙引號時與「@」的表現一致,加雙引號時,會將陣列array_name中的所有元素作為乙個元素新增到陣列中。類似於特殊變數$@和$*的區別。

#!/bin/bash

arr1=()

initarray()

showarray()"

echo "length of arr1: $"

echo "the 3rd elements is: $"

echo

}initarray

echo "original arr1:"

showarray

echo "add new elements 3 and 5"

echo "--------------------"

echo "use @ without quote"

arr1=($ 3 5)

showarray

initarray

echo "use * without quote"

arr1=($ 3 5)

showarray

initarray

echo "use @ with quote"

arr1=("$" 3 5)

showarray

initarray

echo "use * with quote"

arr1=("$" 3 5)

showarray

執行結果為:
original arr1:

elements in arr1: a b 2 4

length of arr1: 3

the 3rd elements is: a b

add new elements 3 and 5

--------------------

use @ without quote

elements in arr1: a b 2 4 3 5

length of arr1: 6

the 3rd elements is: 2

use * without quote

elements in arr1: a b 2 4 3 5

length of arr1: 6

the 3rd elements is: 2

use @ with quote

elements in arr1: a b 2 4 3 5

length of arr1: 5

the 3rd elements is: 4

use * with quote

elements in arr1: a b 2 4 3 5

length of arr1: 3

the 3rd elements is: 5

array_name+=(value1 ... valuen)
這種方式不需要元素下標連續,可以新增多個元素,新增後元素下標不會重置,不存在元素覆蓋的風險。唯一要注意的就是「+=」前後不能有空格,並且後面的待新增元素必須用「()」包圍起來,並且多個元素用空格分隔。新新增的元素的下標取決於原本陣列中最後有值的元素的下標。

#!/bin/bash

arr1=()

initarray()

showarray()"

echo "length of arr1: $"

echo "the 3rd elements is: $"

echo

}initarray

echo "original arr1:"

showarray

echo "add new elements 3 and 5"

echo "--------------------"

echo "use += "

arr1+=(3 5)

showarray

echo "the 8th elements is: $"

執行結果為:

original arr1:

elements in arr1: a b 2 4

length of arr1: 3

the 3rd elements is: a b

add new elements 3 and 5

--------------------

use +=

elements in arr1: a b 2 4 3 5

length of arr1: 5

the 3rd elements is: a b

the 8th elements is: 5

陣列中原本的元素沒有改變,新新增的元素下標是在最後有值的元素下標5的基礎上遞增的。

新增方式

語法可新增多個元素

下標必須連續

新增後下標改變

可能覆蓋原有元素

直接下標新增

array_name[index]=value否否

否是陣列長度新增

array_name[$]=value

或array_name[$]=value否是

否是重新建立陣列

array_name=("$" value1 ... valuen)是否

是否賦值運算子+=

array_name+=(value1 ... valuen)是是

是否

jquery 陣列 新增元素

在前提不知道b在這個陣列的下標,刪除b這個元素 var arrlist a b c d arrlist.splice jquery.inarray b arrlist 1 alert arrlist 其中jquery.inarray b arrlist 是b這個元素在陣列arrlist 中的位置 s...

jquery 陣列 新增元素

在前提不知道b在這個陣列的下標,刪除b這個元素 var arrlist a b c d arrlist.splice jquery.inarray b arrlist 1 alert arrlist 其中jquery.inarray b arrlist 是b這個元素在陣列arrlist 中的位置 s...

javascript陣列 新增元素

在陣列最後加乙個元素 var names1 1,2,3 names1.push 66 console.log names1 後台執行結果 1,2,3,66 在陣列最後加多個元素 names1.push 1,23,4 console.log names1 後台執行結果 1,2,3,66,1,23,4 ...