如何通过间接引用从原始数组中删除元素

问题描述 投票:2回答:1

我有三个数组:

array1=(8 7 6 5 4 3 2 1)
declare -a array2
declare -a array3

X表示我应该使用哪个数组进行某些操作所以,首先我会发现它是这样的:

nameOfArray=array$X[@]
indirectTempArray=("${!nameOfArray}")
echo ${indirectTempArray[@]}  // returns 8 7 6 5 4 3 2 1 in case if X == 1

所以,问题是,如何从具有引用的原始数组中删除值?

bash shell
1个回答
0
投票

您可以将纯字符串传递给unset

array1=(8 7 6 5 4 3 2 1)
X=1
unset "array$X[1]"
declare -p array1

结果不包含第二个元素的数组(索引1):

declare -a array1=([0]="8" [2]="6" [3]="5" [4]="4" [5]="3" [6]="2" [7]="1")
© www.soinside.com 2019 - 2024. All rights reserved.