It struck me as it might be convenient if 'shift' could take an optional arrayname as an argument. Would that be possible or would it cause some incompatibility?
i.e.
set one two three four five dcl -a ARGV=("$@") shift ARGV echo "${ARGV[@]}"
two three four five
shift 2 ARGV
four five I know it can be done with a function, but with more mess. I used (maybe there's a better way, but...): (in my lib file ArFuncs.shh, that I can include) [include stdalias] #[include Types] #if type-checking include Types+line below lshift () { (($#)) || return 1 int nshift=1 if [[ $1 =~ ^[0-9]+$ ]]; then nshift=$1; shift;fi #if ! isArr $1; then echo >&2 "Need arrayname"; return 1; fi my ar=$1; shift my h="$ar[@]" set "${!h}" shift $nshift eval "${ar}=("$@")" }; export -f lshift