case expression in
    pattern1 )
        statements ;;
    pattern2 )
        statements ;;
    ...
esac

esimerkki:
#!/bin/bash
unset asso; declare -A asso
function MatrixStat () {
for n in $@; do
  case $n in
    minimi )        min=$(eval echo \${$1[*]} | awk 'BEGIN { min="";RS=" "}{ if (min=="") min=$1; if ($1<min) min=$1 }END{ print min}') ;;
    miniminosoite ) miniminosoite=$( for (( n=1; n<=${#asso[@]}; n++ )); do [[ ${asso[$n]} = $min ]] && echo $n ; done) ;;
    maximi )        max=$(eval echo \${$1[*]} | awk 'BEGIN { max="";RS=" "}{ if (max=="") max=$1; if ($1>max) max=$1 }END{ print max}') ;;
    maximinosoite ) maximinosoite=$( for (( n=1; n<=${#asso[@]}; n++ )); do [[ ${asso[$n]} = $max ]] && echo $n ; done) ;; 
    keskihajonta )  sd=$(eval echo \${$1[*]} | awk 'BEGIN {RS=" "}{sum+=$1; sumsq+=$1*$1}END {printf "%s\n", sqrt(sumsq/NR - (sum/NR)^2)'}) ;;
    keskiarvo )     avg=$(eval echo \${$1[*]} | awk 'BEGIN {RS=" "}{sum+=$1; sumsq+=$1*$1}END {printf "%s\n", sum/NR}') ;;
    * ) : ;;
  esac 
done
echo
}

for n in {1..100000}; do let asso[$(( RANDOM*40/32768 ))]++ ; done 
MatrixStat asso minimi miniminosoite maximi maximinosoite keskihajonta keskiarvo

echo "assosiatiivisen matriisin keskihajonta="$sd"    keskiarvo="$avg
echo "minimi="$min"     ja sitä vastaavat osoitteet="$miniminosoite
echo "maximi="$max"     ja sitä vastaavat osoitteet="$maximinosoite
