Function: min

Find the element with the lowest value (text or numeric)

USAGE:{ #@ min arrayname

min()
{    
  local arrayname=${1:?Array name required} varname=${2:-var}
  local IFS= string min e
  

Copy the array, $arrayname, to local array

  eval "array=( \"\${$arrayname[@]}\" )"
  eval "string=\"\${$arrayname[*]}\""
  case $string in
    *[!0-9]*)
       

array contains non-numeric value

       min=${array[0]}
       for e in "${array[@]}"
       do
         [ "$e" \< "$min" ] && min=$e
       done
       ;;
    *) min=${array[0]}
       for e in "${array[@]}"
       do
         [ "$e" -lt "$min" ] && min=$e
       done
       ;;
  esac
  eval "$varname=\$min"
}