Find the element with the highest value (text or numeric)
USAGE: max arrayname
max() { local arrayname=${1:?Array name required} varname=${2:-var} local IFS= string max e
Copy the array, $arrayname, to local array
eval "array=( \"\${$arrayname[@]}\" )" eval "string=\"\${$arrayname[*]}\"" case $string in *[!0-9]*)
Array contains non-numeric value, so use string comparison
for e in "${array[@]}" do [ "$e" \> "$max" ] && max=$e done ;; *) max=${array[0]} for e in "${array[@]}" do
Numeric comparison
[ "$e" -gt "$max" ] && max=$e done ;; esac eval "$varname=\$max" }