Remove top element (array[0]) from stack and place in varname
USAGE: pop arrayname varname:var
pop() { local arrayname=${1:?Array name required} array val varname=${2:-var}
Copy the array, $arrayname, to local array
eval "array=( \"\${$arrayname[@]}\" )"
Check that there is at least one element in the array
if [ ${#array[@]} -lt 1 ] then eval "$varname=" return 1 fi
Store first element of array in $varname
eval "$varname=\${array[0]}"
Remove first element
unset array[0]
Rebuild array
eval "$arrayname=( \"\${array[@]}\" )" }