numbers=(1 2 3 4 5)
#bash has no map: a loop over the indexes changes the elements in place
for i in "${!numbers[@]}"; do
numbers[i]=$((numbers[i] * 3))
done
#numbers is (3 6 9 12 15)
#the expansions of strings work on every element at once
words=("apple" "pear")
upper=("${words[@]^^}")
#upper is ("APPLE" "PEAR")
prefixed=("${words[@]/#/fruit-}")
#prefixed is ("fruit-apple" "fruit-pear")
#bash has only whole numbers: awk gives the fractions
mapfile -t quarters < <(printf '%s\n' "${numbers[@]}" | awk '{ print $1 / 4 }')
#quarters is (0.75 1.5 2.25 3 3.75)
echo "numbers is (${numbers[*]})"
echo "upper is (${upper[*]})"
echo "prefixed is (${prefixed[*]})"
echo "quarters is (${quarters[*]})"