首页 > 解决方案 > 如何通过间接引用从原始数组中删除元素

问题描述

我有三个数组:

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

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

标签: bashshell

解决方案


您可以将纯字符串传递给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")

推荐阅读