Adding and removing elements

Arrays and collections / Arrays

primeNumbers=(2 5 7)

#+= with parentheses adds to the end
primeNumbers+=(11)
#primeNumbers is (2 5 7 11)
echo "primeNumbers is (${primeNumbers[*]})"

#there is no insert: the array is put together from two slices
primeNumbers=("${primeNumbers[@]:0:1}" 3 "${primeNumbers[@]:1}")
#primeNumbers is (2 3 5 7 11)
echo "primeNumbers is (${primeNumbers[*]})"

#unset removes by index, but leaves a gap: the indexes are not shifted
unset 'primeNumbers[0]'
#primeNumbers is (3 5 7 11), its indexes are (1 2 3 4)
echo "primeNumbers is (${primeNumbers[*]}), its indexes are (${!primeNumbers[*]})"

#removing by value: keep every element except 7
kept=()
for number in "${primeNumbers[@]}"; do
    if [[ $number != 7 ]]; then
        kept+=("$number")
    fi
done
#the new array is numbered from 0 again
primeNumbers=("${kept[@]}")
#primeNumbers is (3 5 11)
echo "primeNumbers is (${primeNumbers[*]})"

primeNumbers+=(13 17)
#primeNumbers is (3 5 11 13 17)
echo "primeNumbers is (${primeNumbers[*]})"

primeNumbers=()
#primeNumbers is ()
echo "primeNumbers is (${primeNumbers[*]})"