Look up value in array and return index in variable
USAGE: lookup arrayname string varname:index
lookup() { local arrayname=${1:?} string=${2:?} val var=${3:-index}
Copy the array, $arrayname, to local array
eval "array=( \"\${$arrayname[@]}\" )" case ${array[*]} in
If the string is not in the array, don't bother looking
*"$string"*) for val in "${!array[@]}" do case ${array[val]} in *"$string"*) eval "$var=\$val" ;; esac done ;; esac }