Function: move

Move element to right or left

USAGE: move arrayname enum num

move()
{     
  local arrayname=${1:?Arrayname required} enum=${2:?Element required} num=${3:-1}
  local array val left right newsub
  

Copy the array, $arrayname, to local array

  eval "array=( \"\${$arrayname[@]}\" )"
  val=${array[enum]}
  newsub=$(( enum + num +1 ))
  [ $newsub -lt 0 ] && newsub=0
  if [ $num -gt 0 ]
  then
    left=( "${array[@]:0:newsub}" )
    right=( "${array[@]:newsub}" )
    array=( "${left[@]}" "$val" "${right[@]}" )
    unset array[enum]
  elif [ $num -lt 0 ]
  then
    unset array[enum]
    [ $newsub -le 0 ] && newsub=1
    left=( "${array[@]:0:newsub-1}" )
    right=( "${array[@]:newsub-1}" )
    array=( "${left[@]}" "$val" "${right[@]}" )
  fi
  

Copy array back to $arrayname

  eval "$arrayname=( \"\${array[@]}\" )"
}
remove() #@ Remove element from array
{        #@ USAGE: remove arrayname position
  local arrayname=${1:?Arrayname required} num=${2:-1}
  local array
  [ $num -lt 0 ] && num=0 #? Or should this return an error???
  unset $arrayname[num]
  

Copy array back to $arrayname

  eval "$arrayname=( \"\${$arrayname[@]}\" )"
}