Iterating over an array with index

Arrays and collections / Arrays

numbers=(2 3 5 7 11 13 17)

#"${!numbers[@]}" are the indexes of the elements
for i in "${!numbers[@]}"; do
    echo "numbers[$i] is ${numbers[i]}"
done
#numbers[0] is 2
#numbers[1] is 3
#numbers[2] is 5
#numbers[3] is 7
#numbers[4] is 11
#numbers[5] is 13
#numbers[6] is 17

#a loop with a counter, as in C; inside [ ] and (( )) the index
#is arithmetic, so the $ before i is not needed
string=""
for ((i = 0; i < ${#numbers[@]}; i++)); do
    string+="${numbers[i]}"
    if ((i < ${#numbers[@]} - 1)); then
        string+="; "
    fi
done
#string is "2; 3; 5; 7; 11; 13; 17"

echo "string is $string"