bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

comment on RFE: 'shift'' [N] ARRAYNAME


From: L A Walsh
Subject: comment on RFE: 'shift'' [N] ARRAYNAME
Date: Tue, 25 Sep 2018 17:17:27 -0700
User-agent: Thunderbird

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]