Para remover um elemento em um determinado índice, podemos usar unset
e copiar para outro array. Somente apenas unset
não é necessário neste caso. Como unset
não remove o elemento, ele apenas define a cadeia nula para o índice específico na matriz.
declare -a arr=('aa' 'bb' 'cc' 'dd' 'ee')
unset 'arr[1]'
declare -a arr2=()
i=0
for element in ${arr[@]}
do
arr2[$i]=$element
((++i))
done
echo ${arr[@]}
echo "1st val is ${arr[1]}, 2nd val is ${arr[2]}"
echo ${arr2[@]}
echo "1st val is ${arr2[1]}, 2nd val is ${arr2[2]}"
A saída é
aa cc dd ee
1st val is , 2nd val is cc
aa cc dd ee
1st val is cc, 2nd val is dd