Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > gnu.bash.bug > #14664
| From | L A Walsh <bash@tlinx.org> |
|---|---|
| Newsgroups | gnu.bash.bug |
| Subject | comment on RFE: 'shift'' [N] ARRAYNAME |
| Date | 2018-09-25 17:17 -0700 |
| Message-ID | <mailman.1328.1537921058.1284.bug-bash@gnu.org> (permalink) |
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
Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread
comment on RFE: 'shift'' [N] ARRAYNAME L A Walsh <bash@tlinx.org> - 2018-09-25 17:17 -0700
csiph-web