# uncommon shell code

4 messages from 2005-09-22 to 2005-09-23. Participants: Robert Watson, Junio C Hamano.
Thread: https://gitlist.dev/t/1912

## Robert Watson, 2005-09-22 14:32

Subject: uncommon shell code
Message-ID: <72499e3b05092207326abadd91@mail.gmail.com>
URL: https://gitlist.dev/e/72499e3b05092207326abadd91%40mail.gmail.com

```
Hi,

I found the following shell code in git-tag.sh (and others):

while case "$#" in 0) break ;; esac
do
  ...
done

Why not use the straight forward code:

while test "$#" -ne 0
do
   ...
done

Are there any functional difference between them?

Robertoo

```

## Junio C Hamano, 2005-09-22 22:03

Subject: Re: uncommon shell code
Message-ID: <7vu0gclpyo.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vu0gclpyo.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <72499e3b05092207326abadd91@mail.gmail.com>

```
Robert Watson <robert.oo.watson@gmail.com> writes:

> I found the following shell code in git-tag.sh (and others):

My fault; see point 2. in this article:

	http://marc.theaimsgroup.com/?l=git&m=112386506308820&w=2

Please either get used to it or wait until I decide to modernize
the scripts wholesale, whichever comes first.

```

## Robert Watson, 2005-09-23 08:32

Subject: Re: uncommon shell code
Message-ID: <72499e3b05092301322a145e52@mail.gmail.com>
URL: https://gitlist.dev/e/72499e3b05092301322a145e52%40mail.gmail.com
In-Reply-To: <7vu0gclpyo.fsf@assigned-by-dhcp.cox.net>

```
On 9/22/05, Junio C Hamano <junkio@cox.net> wrote:
> Robert Watson <robert.oo.watson@gmail.com> writes:
>
> > I found the following shell code in git-tag.sh (and others):
>
> My fault; see point 2. in this article:
>
>         http://marc.theaimsgroup.com/?l=git&m=112386506308820&w=2
>
> Please either get used to it or wait until I decide to modernize
> the scripts wholesale, whichever comes first.
>

I see.  I thought I was old fashioned by sticking to test instead of
[] (that is your point 1), but obviously I am not old enough ;)

Well, it's fine now that I know what it is.  But it hurts readability,
and probably it's a good idea to simplify it.  Any reasonable shell
should built-in test(1)?

Robertoo

```

## Junio C Hamano, 2005-09-23 09:00

Subject: Re: uncommon shell code
Message-ID: <7vwtl8duqj.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vwtl8duqj.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <72499e3b05092301322a145e52@mail.gmail.com>

```
Robert Watson <robert.oo.watson@gmail.com> writes:

> Well, it's fine now that I know what it is.  But it hurts
> readability, and probably it's a good idea to simplify it.

I try to stay away from style discussion, but readability is
always relative and personal.  Things like 'while case $# in
..." is an idiom for some but not for others -- and I am
included in the former group of people (unfortunately).  In any
case, 'while test $# != 0' is not too much of a simplification
anyway.

> Any reasonable shell should built-in test(1)?

Correct.  The idiom comes from performance issues -- lack of
built in test long ago -- and that issue is not relevant
anymore.  But the pattern being an idiom for some still is.

Having said that, I do not feel too strong about enforcing _my_
style.  I _do_ feel somewhat strong about consistency, so if
somebody wants to update them, without dropping the ball in the
middle, it is very likely that I can be persuaded to take a
series of patches to modernize them.

```
