中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shell數組如何添加元素及注意事項

發布時間:2021-03-16 15:09:58 來源:億速云 閱讀:273 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關Shell數組如何添加元素及注意事項的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

直接下標添加

array_name[index]=value

最簡單的添加方式,直接用下標index為數組元素賦值,在使用時需要注意的是就是需要確保下標index處原本是沒有值的,否則會替換index處原本的值。

數組長度添加

array_name[${#array_name[@]}]=value
#或array_name[${#array_name[*]}]=value

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

arr=([1]="a" [2]="b")
echo ${arr[@]}
arr[${#arr[@]}]="c"
echo ${arr[@]}

實際上并有添加元素,而是將下標為2的元素值“b”替換為了“c”。

重新創建數組

array_name=("${array_name[@]}" value1 ... valueN)

 這種方式不需要下標連續,可同時添加多個元素,但是有一些要注意的地方:

首先,使用此方式添加元素后,數組中原有元素的下標會重置,會從0開始變成連續的,如果不希望改變下標則不能使用這種方式。

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

最后,不能將“@”替換為“*”,雖然在輸出數組元素時可以相互替換,如果替換為“*”,不加雙引號時與“@”的表現一致,加雙引號時,會將數組array_name中的所有元素作為一個元素添加到數組中。類似于特殊變量$@和$*的區別。

#!/bin/bash
arr1=()
initArray(){
  arr1=([2]="a b" [3]=2 [5]=4)
}
showArray(){
  echo "Elements in arr1: ${arr1[@]}"
  echo "Length of arr1: ${#arr1[@]}"
  echo "The 3rd elements is: ${arr1[2]}"
  echo
}
initArray
echo "original arr1:"
showArray
echo "add new elements 3 and 5"
echo "--------------------"
echo "use @ without quote"
arr1=(${arr1[@]} 3 5)
showArray
initArray
echo "use * without quote"
arr1=(${arr1[*]} 3 5)
showArray
initArray
echo "use @ with quote"
arr1=("${arr1[@]}" 3 5)
showArray
initArray
echo "use * with quote"
arr1=("${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(){
  arr1=([2]="a b" [3]=2 [5]=4)
}
showArray(){
  echo "Elements in arr1: ${arr1[@]}"
  echo "Length of arr1: ${#arr1[@]}"
  echo "The 3rd elements is: ${arr1[2]}"
  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: ${arr1[7]}"

運行結果為:

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[${#array_name[@]}]=value

或array_name[${#array_name[*]}]=value

重新創建數組array_name=("${array_name[@]}" value1 ... valueN)
賦值運算符+=array_name+=(value1 ... valueN)

感謝各位的閱讀!關于“Shell數組如何添加元素及注意事項”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇坪县| 新沂市| 廊坊市| 龙井市| 郧西县| 安仁县| 沅陵县| 嘉善县| 名山县| 平舆县| 宜兰市| 芜湖市| 金沙县| 和田县| 邢台市| 弋阳县| 建昌县| 丰顺县| 新宁县| 宁南县| 丰原市| 彝良县| 乌兰县| 潮州市| 寿宁县| 承德县| 孟村| 石棉县| 桂阳县| 周宁县| 岚皋县| 梁山县| 措勤县| 宁安市| 聂拉木县| 奇台县| 韶关市| 高雄县| 娄烦县| 页游| 竹溪县|