Array of parameters

Functions

#"$@" are all the arguments, each one as it was given;
#$# is their number
getAvg() {
    if (($# == 0)); then
        echo 0
        return
    fi

    local sum=0
    local value
    for value in "$@"; do
        ((sum += value))
    done
    #bash has no fractions: awk divides
    awk -v sum="$sum" -v count="$#" 'BEGIN { print sum / count }'
}

avg=$(getAvg 1 2 3 4)
#avg is 2.5

#an array goes in as a list of arguments
numbers=(2 4 9)
avgArray=$(getAvg "${numbers[@]}")
#avgArray is 5

echo "avg is $avg"
echo "avgArray is $avgArray"