Download raw body.
regress common.sh: POSIX arithmetic for trim_obj_id()
On Wed, Sep 16, 2020 at 10:01:22PM +0200, Stefan Sperling wrote:
> On Wed, Sep 16, 2020 at 07:37:01PM +0200, Christian Weisgerber wrote:
> > Replace ksh syntax with POSIX arithmetic expressions.
> >
> > This one had me puzzled. How did the while condition ever work?
> > Apparently, variables are expanded without '$' for arithmetic(!)
> > comparisons inside [[ ... ]] and in our (k)sh this behavior accidentally
> > leaks out to [ ... ].
> >
> > Mark the variables as "local" while here. Actually, "local" isn't
> > part of the POSIX shell language, but it's used pervasively in these
> > scripts and seems widely supported in practice.
> >
> > ok?
>
> Yes, ok.
>
> I think this is a case where I bashed my head against a wall until
Don't you mean you kshed your head against a wall? *snicker*
> I somehow got it working, without giving any consideration to POSIX.
>
> > diff 0429cd76586cecb81d322546ab686ce527eb8f83 /home/naddy/got
> > blob - e95df3908f366957e8608730cd2dc49e62155ac0
> > file + regress/cmdline/common.sh
> > --- regress/cmdline/common.sh
> > +++ regress/cmdline/common.sh
> > @@ -96,13 +96,13 @@ git_show_tree()
> >
> > trim_obj_id()
> > {
> > - let trimcount=$1
> > - id=$2
> > + local trimcount=$1
> > + local id=$2
> >
> > - pat=""
> > - while [ trimcount -gt 0 ]; do
> > + local pat=""
> > + while [ "$trimcount" -gt 0 ]; do
> > pat="[0-9a-f]$pat"
> > - let trimcount--
> > + trimcount=$((trimcount - 1))
> > done
> >
> > echo ${id%$pat}
> > --
> > Christian "naddy" Weisgerber naddy@mips.inka.de
> >
> >
--
Tracey Emery
regress common.sh: POSIX arithmetic for trim_obj_id()